Exemple #1
0
 public Line2D GetNormalLine(Point2D point)
 {
     double c = EqB*point.X - EqA*point.Y;
     var tempLine = new Line2D(-EqB, EqA, c, Normal, point);
     Point2D crossPoint = Geometry.GetCrossing(this, tempLine);
     return new Line2D(crossPoint, point);
 }
Exemple #2
0
 public static bool GetCrossing(Segment2D segment1, Segment2D segment2, out Point2D crossingPoint)
 {
     var line1 = new Line2D(segment1.Start, segment1.Finish);
     var line2 = new Line2D(segment2.Start, segment2.Finish);
     crossingPoint = GetCrossing(line1, line2);
     var p = (crossingPoint.X - segment1.Finish.X) / (segment1.Start.X - segment1.Finish.X);
     return (0 <= p && p <= 1) && (crossingPoint.Y.Equals((p * segment1.Start.Y - (1 - p) * segment1.Finish.Y)));
 }
Exemple #3
0
        public static Point2D GetCrossing(Line2D line1, Line2D line2)
        {
            double a1 = line1.Direction.X,
                   b1 = line1.Direction.Y,
                   a2 = line2.Direction.X,
                   b2 = line2.Direction.Y,
                   c1 = line2.Begin.X - line1.Begin.X,
                   c2 = line2.Begin.Y - line1.Begin.Y;

            double t1 = (b2*c1 - a2*c2)/(a1*b2 - a2*b1);

            return new Point2D(line1.Begin.X + a1*t1, line1.Begin.Y + b1*t1);
        }
Exemple #4
0
 public Line2D Apply(Line2D arg)
 {
     return new Line2D(Apply(arg.Begin), Apply(arg.End));
 }
Exemple #5
0
 public Line2D Apply(Line2D arg)
 {
     return(new Line2D(Apply(arg.Begin), Apply(arg.End)));
 }
Exemple #6
0
 public static double Distance(Point2D point, Line2D line)
 {
     Point2D vector = point - line.Begin;
     return vector.MultiplyVector(line.Direction).Norm()/line.Direction.Norm();
 }
Exemple #7
0
 public static bool IsParallel(Line2D line1, Line2D line2)
 {
     return AreCollinear(line1.Direction, line2.Direction);
 }
Exemple #8
0
        public static double Distance(Point2D point, Line2D line)
        {
            Point2D vector = point - line.Begin;

            return(vector.MultiplyVector(line.Direction).Norm() / line.Direction.Norm());
        }
Exemple #9
0
 public static bool IsParallel(Line2D line1, Line2D line2)
 {
     return(AreCollinear(line1.Direction, line2.Direction));
 }