OpenCASCADE 平面求交
OpenCASCADE提供了类IntAna_QuadQuadGeo用来计算两个二次曲面quadric(球面、圆柱面、圆锥面及平面,平面是二次曲面的特例)之间的交线。他们之间可能的结果有:
l 一个点
l 一条或两条直线
l 一个点和一条直线
l 圆
l 椭圆
l 抛物线
l 双曲线
将源码结合《高等数学》、《解析几何》等书,可以来学习如何将理论付诸实践。本文主要介绍这个类中两个平面求交的源码实现。从源码中也可以看出OpenCASCADE官方开发人员的编码习惯。
将源码列出如下:
void IntAna_QuadQuadGeo::Perform (const gp_Pln& P1, const gp_Pln& P2, const Standard_Real TolAng, const Standard_Real Tol) { Standard_Real A1, B1, C1, D1, A2, B2, C2, D2, dist1, dist2, aMVD; // done=Standard_False; param2bis=0.; // P1.Coefficients(A1,B1,C1,D1); P2.Coefficients(A2,B2,C2,D2); // gp_Vec aVN1(A1,B1,C1); gp_Vec aVN2(A2,B2,C2); gp_Vec vd(aVN1.Crossed(aVN2)); // const gp_Pnt& aLocP1=P1.Location(); const gp_Pnt& aLocP2=