VS:CircleCircleInters
.VectorScript|VectorScript ..VS:Function Reference|Function Reference ..VS:Function_Reference_Appendix|Appendix
Description
Finds the intersection of two circles. Returns FALSE if the circles do not intersect.
FUNCTION CircleCircleIntersec(
cenPt1X, cenPt1Y, cenPt1Z :REAL;
cenPt2X, cenPt2Y, cenPt2Z :REAL;
radius1 :REAL;
radius2 :REAL;
VAR pt1X, pt1Y, pt1Z :REAL;
VAR pt2X, pt2Y, pt2Z :REAL) :BOOLEAN;
def vs.CircleCircleInters(cenPt1, cenPt2, radius1, radius2): return (BOOLEAN, pt1, pt2)
Parameters
cenPt1X, cenPt1Y, cenPt1Z REAL cenPt2X, cenPt2Y, cenPt2Z REAL radius1 REAL radius2 REAL pt1X, pt1Y, pt1Z REAL Output parameter. pt2X, pt2Y, pt2Z REAL Output parameter.
Remarks
This has been renamed "CircleCircleInters", VW 13+ (82099)
Example
<pre>PROCEDURE Example; VAR cen_pt1, cen_pt2 :VECTOR; Radius1, Radius2, startAng1, startAng2, sweepAng1, sweepAng2, fuzz :REAL; pt1, pt2 :VECTOR; PROCEDURE ArcInfo(h :HANDLE; VAR cen_pt :VECTOR; VAR startAng, sweepAng, Radius :REAL); BEGIN Hcenter(h, cen_pt.x, cen_pt.y); GetArc (h, startAng, sweepAng); IF GetType(h) = 6 THEN Radius := Hperim(h) / Deg2Rad(sweepAng) ELSE IF GetType(h) = 89 THEN Radius := 5729.28 / ((100 * Hangle(h)) / Hlength(h)); END; BEGIN CallTool(-205); ArcInfo(FSActLayer, cen_pt1, startAng1, sweepAng1, Radius1); CallTool(-205); ArcInfo(FSActLayer, cen_pt2, startAng2, sweepAng2, Radius2); IF CircleCircleInters(cen_pt1, cen_pt2, Radius1, Radius2, .1, pt1, pt2) THEN BEGIN Locus(pt1.x, pt1.y); Locus(pt2.x, pt2.y); END; END; RUN(Example);</pre>
Version
Availability: from All Versions
This is drop-in function.