- return new Line(l1, l2);
-#else
- Vector normal = Vector::Normal(p1, p2);
- Vector p4 = position + normal;
-
- // Find the intersection of the line and position + normal to the line
- double px = (((p1.x * p2.y) - (p1.y * p2.x)) * (position.x - p4.x))
- - ((p1.x - p2.x) * ((position.x * p4.y) - (position.y * p4.x)));
- double py = (((p1.x * p2.y) - (p1.y * p2.x)) * (position.y - p4.y))
- - ((p1.y - p2.y) * ((position.x * p4.y) - (position.y * p4.x)));
- double d = ((p1.x - p2.x) * (position.y - p4.y))
- - ((p1.y - p2.y) * (position.x - p4.x));
-
- // px = (x1y2 - y1x2)(x3 - x4) - (x1 - x2)(x3y4 - y3x4)
- // py = (x1y2 - y1x2)(y3 - y4) - (y1 - y2)(x3y4 - y3x4)
- // d = (x1 - x2)(y3 - y4) - (y1 - y2)(x3 - x4) = 0 if lines are parallel
- // Intersection is (px / d, py / d)
-
- Vector v1(px / d, py / d);
-
-// Vector normal = Vector::Normal(p1, p2);
- p4 = endpoint + normal;
-
- // Find the intersection of the line and endpoint + normal to the line
- px = (((p1.x * p2.y) - (p1.y * p2.x)) * (endpoint.x - p4.x))
- - ((p1.x - p2.x) * ((endpoint.x * p4.y) - (endpoint.y * p4.x)));
- py = (((p1.x * p2.y) - (p1.y * p2.x)) * (endpoint.y - p4.y))
- - ((p1.y - p2.y) * ((endpoint.x * p4.y) - (endpoint.y * p4.x)));
- d = ((p1.x - p2.x) * (endpoint.y - p4.y))
- - ((p1.y - p2.y) * (endpoint.x - p4.x));