博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解析几何求交之直线与二次曲面
阅读量:5740 次
发布时间:2019-06-18

本文共 1653 字,大约阅读时间需要 5 分钟。

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

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

在解析几何中,为了便于研究二次曲线

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

把方程化成标准形式:

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

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

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

l gp_Sphere:解析球面

l gp_Cylinder:解析柱面

l gp_Cone:解析锥面

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

 

 3. Math Direct Polynomial Roots

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

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

  Standard_EXPORT IntAna_IntConicQuad(const gp_Lin& L, const IntAna_Quadric& Q);

其实现原码中注释如下:

 

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

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

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

 

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

4. Conclusion

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

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

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

5. References

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

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

转载于:https://www.cnblogs.com/opencascade/p/IntAna_IntConicQuad.html

你可能感兴趣的文章
jQuery|元素遍历
查看>>
sql语句大全
查看>>
RedHat 6 安装配置Apache 2.2
查看>>
Openstack 安装部署指南翻译系列 之 Manila服务安装(Share Storage)
查看>>
underscore.js学习笔记
查看>>
windows下常用命令
查看>>
1.5编程基础之循环控制_29:数字反转
查看>>
组策略 之 设备安装设置
查看>>
人工智能还能干这些?这8种AI应用你可能意想不到
查看>>
实现Hyper-V 虚拟机在不同架构的处理器间迁移
查看>>
简单使用saltstack
查看>>
针对web服务器容灾自动切换方案
查看>>
突破媒体转码效率壁垒 阿里云首推倍速转码
查看>>
容器存储中那些潜在的挑战和机遇
查看>>
R语言的三种聚类方法
查看>>
55%受访企业将物联网战略视为有效竞争手段
查看>>
深入理解Python中的ThreadLocal变量(上)
查看>>
如果一切即服务,为什么需要数据中心?
查看>>
《游戏开发物理学(第2版)》一导读
查看>>
Erlang简史(翻译)
查看>>