Пример #1
0
 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;
     }
 }
Пример #2
0
 public Point(Euclidian._2.Point P)
 {
     X = P.X;
     Y = P.Y;
 }