Next: Regular Closed Plane Curve Segments, Previous: Querying Regular Closed Plane Curves, Up: Regular Closed Plane Curve Reference
const function: bool_point_pair intersection_points (Point ref_pt, Point p0, Point p1)const function: bool_point_pair intersection_points (const Point& ref_pt, const Path& p)The version of this function taking
Pointarguments finds the intersection points, if any, of theReg_Cl_Plane_Curveand the line p that passes through thePointsp_0 and p_1. In the other version, thePathargument must be a linearPath, and its first and lastPointsare passed to the first version of this function as p0 and p1, respectively.Let C be the
Reg_Cl_Plane_Curve. C and p can intersect at at most two intersection points i_1 and i_2. Letbppbe the return value of this function. The intersection points need not be on the line segment betweenpt0andpt1.bpp.first.ptwill be set to the first intersection point if it exists, orINVALID_POINTif it doesn't. If the first intersection point exists and is on the line segment betweenpt0andpt1In [next figure] , the line AB is normal to the
Ellipsee, or, to put it another way, AB is perpendicular to the plane of e. The intersection point i_0 lies within the perimeter of e.The line DE is skew to the plane of e, and intersects e at i_1, on the perimeter of e.
Point p0(2, 2, 3); Ellipse e(p0, 3, 4, 30, -60, -5.2); Point p1 = p0.mediate(e.get_point(11), .5); Point A = e.get_normal(); A *= 2.5; A.shift(p1); Point B = A.mediate(p1, 2); bool_point_pair bpp = e.intersection_points(A, B); Point C(0, 2, 0); Point D(0, -3.5, 0); C *= D.rotate(2, 0, -5); C *= D.shift(e.get_point(4)); bpp = e.intersection_points(C, D);
![]()
Fig. 154.
In [next figure] , q and e are coplanar. In this case, only the intersections of q with the perimeter of e are returned by
intersection_points().A = p0.mediate(e.get_point(3), 1.5); B = p0.mediate(e.get_point(11), 1.5); Path q(A, B); bpp = e.intersection_points(q);
![]()
Fig. 155.