解析幾何求交之圓與二次曲面
eryar@163.com
Abstract. OpenCASCADE provides the analytic intersection between a conic and a quadric in the package IntAna.
Key Words. Analytic geometry, intersection, coninc, quadric
1. Introduction
OpenCASCADE中的包IntAna提供了解析幾何曲線(二次曲線)與解析曲面(二次曲面)求交、解析曲面與解析曲面求交的功能。其中IntAna分別是Intersection Analytic的前三個字母縮寫,表示解析幾何求交。
我們學過了《線性代數(shù)》中的二次型,其中二次型在解析幾何中的一個應用就是二次曲線和二次曲面方程的化簡及其性質的分析。
本文主要結合源碼分析圓與二次曲面求交的實現(xiàn),其他二次曲線與二次曲面求交的可以依此類推。

2. Quadratic form
在解析幾何中,為了便于研究二次曲線

的幾何性質,我們可以選擇適當?shù)淖鴺诵D變換

把方程化成標準形式:

根據(jù)標準形式中的系數(shù)來分析這個二次曲線是什么曲線,即圓、橢圓、拋物線、雙曲線。
在OpenCASCADE中解析幾何的二次曲面有以下幾種類型:
l gp_Pln:平面可看作二次曲面的特例
l gp_Sphere:解析球面
l gp_Cylinder:解析柱面
l gp_Cone:解析錐面
這些解析曲面都可以統(tǒng)一使用二次多項式來表示,即這個二次多項式的系數(shù)確定了一個二次曲面。OpenCASCADE中相應的類是IntAna_Quaric:

3. Math Trigonometric Function Roots
OpenCASCADE中類IntAna_IntConicQuad中提供了二次曲線與二次曲面求交功能,其中計算圓與二次曲面相交的函數(shù)是:
//! Creates the intersection between a circle and a quadric.
Standard_EXPORT IntAna_IntConicQuad(const gp_Circ& C, const IntAna_Quadric& Q);
其實現(xiàn)原碼中注釋如下:
根據(jù)其注釋,可知其計算過程如下:將圓的方程在其局部坐標系中用參數(shù)形式表示,

將二次曲面方程的系數(shù)也變換到圓的坐標系中,因為圓的參數(shù)方程中為0,所以將圓的參數(shù)方程代入二次曲面的方程后,和z相關的項的系數(shù)都可以簡化了。

得到一個三角函數(shù)的方程后,這時就要引入基礎模塊中的數(shù)學工具集來解決問題了。

類math_TrigonometricFunctionRoots主要用于對如下形式的三角函數(shù)方程進行求解:

4. Conclusion
對于圓與二次曲面求交的實現(xiàn)來看,也可以不用變換二次曲面的坐標系,直接將圓的參數(shù)方程代入曲面的二次方程中:

最終化簡也可得到一個三角函數(shù)方程,但是計算量與變換曲面坐標系對比來看會更大。
從上面的源碼分析可知,在OpenCASCADE中對于解析曲線與曲面求交使用二次多項式系數(shù)來表示的。通過將二次曲線用參數(shù)形式的方程來表示,并代入二次曲面的方程,化簡后直接使用math包中的工具(多項式方程求解和三角函數(shù)求解工具)對方程進行求解。
5. References
1. 同濟大學應用數(shù)學系. 線性代數(shù)(第四版). 高等教育出版社
2. 丘維聲. 解析幾何. 北京大學出版社
為了方便大家在移動端也能看到我的博文和討論交流,現(xiàn)已注冊微信公眾號,歡迎大家掃描下方二維碼關注。