解析几何求交之直线与二次曲面

摘要:
我们学过了《线性代数》中的二次型,其中二次型在解析几何中的一个应用就是二次曲线和二次曲面方程的化简及其性质的分析。本文主要结合源码分析直线与二次曲面求解的实现来抛砖引玉,后期将二次曲线与二次曲面求交的各种情况做全面分析。对于化简后的直线与二次曲面方程是一个二次多项式方程,则使用这个类直接进行求解。

解析几何求交之直线与二次曲面

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的前三个字母缩写,表示解析几何求交。

我们学过了《线性代数》中的二次型,其中二次型在解析几何中的一个应用就是二次曲线和二次曲面方程的化简及其性质的分析。

本文主要结合源码分析直线与二次曲面求解的实现来抛砖引玉,后期将二次曲线与二次曲面求交的各种情况做全面分析。

2.Quadratic form

在解析几何中,为了便于研究二次曲线解析几何求交之直线与二次曲面第1张解析几何求交之直线与二次曲面第2张

的几何性质,我们可以选择适当的坐标旋转变换

解析几何求交之直线与二次曲面第3张

把方程化成标准形式:解析几何求交之直线与二次曲面第4张

根据标准形式中的系数来分析这个二次曲线是什么曲线,即圆、椭圆、抛物线、双曲线。

OpenCASCADE中解析几何的二次曲面有以下几种类型:

lgp_Pln:平面可看作二次曲面的特例

lgp_Sphere:解析球面

lgp_Cylinder:解析柱面

lgp_Cone:解析锥面

这些解析曲面都可以统一使用二次多项式来表示,即这个二次多项式的系数确定了一个二次曲面。OpenCASCADE中相应的类是IntAna_Quaric

解析几何求交之直线与二次曲面第5张

3.Math Direct Polynomial Roots

OpenCASCADE中类IntAna_IntConicQuad中提供了二次曲线与二次曲面求交功能,其中计算直线与二次曲面相交的函数是:

//! Creates the intersection between a line and a quadric.

Standard_EXPORT IntAna_IntConicQuad(constgp_Lin&L,constIntAna_Quadric&Q);

其实现原码中注释如下:

解析几何求交之直线与二次曲面第6张

根据其注释,可知其计算过程如下:将直线方程用参数形式表示,

解析几何求交之直线与二次曲面第7张

将参数表示的直线方程代入二次曲面方程,化简可得一个二次多项式,对二次多项式进行求解即得直线与二次曲面的交点。

解析几何求交之直线与二次曲面第8张

得到一个二次多项式的方程后,这时就要引入基础模块中的数据工具集来解决问题了。

解析几何求交之直线与二次曲面第9张

math_DirectPolynomialRoots可以用来对4次及以下的多项式方程进行求解。对于化简后的直线与二次曲面方程是一个二次多项式方程,则使用这个类直接进行求解。

4.Conclusion

从上面的源码分析可知,在OpenCASCADE中对于解析曲线与曲面求交使用二次多项式系数来表示的。通过将方程化简后直接使用math包中的工具对方程进行求解。

使用OpenCASCADE熟练会发现他们的编码风格也是有一定的套路的,即一个类会提供几个构造函数,将不同参数进行输入。有的在构造函数中调用初始化函数Init()来对算法需要的其他输入数据进行初始化,有的则直接在构造函数中调用的计算函数Perform()。如果构造函数中没有调用计算函数Perform(),则需要手动调用Perform()。算法的成功通过函数IsDone()来检测。根据检测判断是否取出计算值。

春节就要到了,祝大家在新的一年里心想事成,万事如意!

5.References

1.同济大学应用数学系. 线性代数(第四版). 高等教育出版社

2.丘维声. 解析几何. 北京大学出版社

免责声明:文章转载自《解析几何求交之直线与二次曲面》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Centos 8升级内核版本SqlServer获取字符串中数字,中文及字符部分数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

计算几何--圆与球

内容参考书籍——《算法竞赛入门经典训练指南》   圆上任意一点都拥有唯一的圆心角,所以在定义圆的时候可以加一个通过圆心角求坐标的函数。   直线和圆的交点。假定直线为AB,圆心为C,半径r。那么我们采用解方程组的方法计算交点。设交点为P=A+t(B-A),代入原方程...

算法+OpenCV】基于opencv的直线和曲线拟合与绘制(最小二乘法)

http://blog.csdn.net/guduruyu/article/details/72866144 最小二乘法多项式曲线拟合,是常见的曲线拟合方法,有着广泛的应用,这里在借鉴最小二乘多项式曲线拟合原理与实现的原理的基础上,介绍如何在OpenCV来实现基于最小二乘的多项式曲线拟合。   概念 最小二乘法多项式曲线拟合,根据给定的m个点,并不要求这...

半平面交详解

更好的阅读体验 定义: 半平面: 顾名思义,就是平面的一半。一条直线会把平面分成两部分,就是两个半平面。对于半平面,我们可以用直线方程式如:(ax + by >= c) 表示,更常用的是用直线表示。 半平面交: 顾名思义,就是多个半平面求交集。其结果可能是一个凸多边形、无穷平面、直线、线段、点等。 多边形的核: 如果多边形中存在一个区域使得在区域中可...

uni-app爬坑之旅_开发一个自己的app_day55_实现不规则区域的点击判定

一、项目进度 今天终于把不规则区域的点击判定给实现了,之前想用map标签来做,这在网页上是可行的,但是uni-app把map做成了一个地图组件,功能和HTML中的完全不同,没法进行不规则区域定位,于是采用了下面的办法 二、使用方程组,结合点击坐标进行不规则区域的判定 用户点击屏幕时会把点击事件的信息存在event中,我们可以通过event来获取用户点击屏...