throw new Error("not implemented");
if ((p2.getX() - p1.getX()) * (p3.getY() - p1.getY()) - (p3.getX() - p1.getX()) * (p2.getY() - p1.getY()) > 0) { Point2D p = p3; p3 = p1; p1 = p; }   double dx1 = (p1.getX() - p2.getX()) / p1.distance(p2); double dy1 = (p1.getY() - p2.getY()) / p1.distance(p2); double dx2 = (p2.getX() - p3.getX()) / p3.distance(p2); double dy2 = (p2.getY() - p3.getY()) / p3.distance(p2); double theta1 = Math.atan2(dx1, dy1); double theta2 = Math.atan2(dx2, dy2);  double dx = r * Math.cos(theta2) - r * Math.cos(theta1); double dy = -r * Math.sin(theta2) + r * Math.sin(theta1);  if (theta1 < 0) theta1 += 2 * Math.PI; if (theta2 < 0) theta2 += 2 * Math.PI; if (theta2 < theta1) theta2 += 2 * Math.PI;    dx1 = p1.getX() - p2.getX(); dy1 = p1.getY() - p2.getY(); dx2 = p3.getX() - p2.getX(); dy2 = p3.getY() - p2.getY();   double t2 = -(dx1 * dy - dy1 * dx) / (dx2 * dy1 - dx1 * dy2); double x2 = t2 * (p3.getX() - p2.getX()) + p2.getX(); double y2 = t2 * (p3.getY() - p2.getY()) + p2.getY();   double x = x2 - r * Math.cos(theta2); double y = y2 + r * Math.sin(theta2);  setArc(x - r, y - r, 2 * r, 2 * r, Math.toDegrees(theta1), Math.toDegrees(theta2 - theta1), getArcType());
  public void setArcByTangent(Point2D p1, Point2D p2, Point2D p3, double r)  {		// XXX Implement.		throw new Error("not implemented");	}