public Line(Point P, Point Q) { _a = new Point(P); _b = new Point(Q); if (P.X == Q.X) // se for vertical { _a = new Point((P.Y < Q.Y) ? P : Q); _b = new Point((P.Y < Q.Y) ? Q : P); _center = new Point(_a.X, 0); _radius = 0; _alfa = new Point(Center.X, 0); _beta = new Point(Center.X, -1); _director = new Vector(new Point(0, 1)); } else { _a = new Point((P.X < Q.X) ? P : Q); _b = new Point((P.X < Q.X) ? Q : P); if (A.Y == B.Y) { _center = new Point((A.X + B.X) / 2, 0); } else { Euclidian._2.LineSegment aux = new Euclidian._2.LineSegment(new Euclidian._2.Point(A.X, A.Y), new Euclidian._2.Point(B.X, B.Y)); Euclidian._2.Point pointaux = new Euclidian._2.Point((A.X + B.X) / 2, (A.Y + B.Y) / 2); Euclidian._2.Line L = new Euclidian._2.Line(pointaux, aux.Director.Normal); Euclidian._2.Point collision = L.IntersectionPoint(new Euclidian._2.Line(new Euclidian._2.Point(), new Euclidian._2.Point(1, 0))); _center = new Point(collision); } _radius = (float)A.EuclidianDistance(Center); _alfa = new Point(Center.X - Radius, 0); _beta = new Point(Center.X + Radius, 0); _director = new Vector(Center, A).Normal; } }
public Point(Euclidian._2.Point P) { X = P.X; Y = P.Y; }