几何算法——6.曲线曲面求交的方法总结(国内外文献调研、思考和总结)

news2025/1/9 1:54:45

几何算法——6.曲线曲面求交的方法总结(国内外文献调研、思考和总结)

  • 1 曲线曲线
    • 1.1 直线/二次曲线
    • 1.2 二次曲线/二次曲线
    • 1.3 其他类型
  • 2 曲线曲面
    • 2.1 直线/二次曲面,二次曲线/平面
    • 2.2 二次曲线/二次曲面
    • 2.3 其他类型
  • 3 曲面曲面
    • 3.1 平面/二次曲面
    • 3.2 二次曲面/二次曲面
    • 3.3 其他类型
      • (1995年4月)隐式曲面/参数曲面的求交算法 (冉瑞江 王亚平 唐荣锡/北航飞行器制造工程系)
      • (1997年12月)平面向量场与曲率分析在曲面求交中的应用(宁涛 马德昌 王亚平 唐荣锡/北航飞行器制造工程系)
      • (1999年3月)一种参数曲面与隐式曲面的求交算法(余正 彭群生 马利庄/浙江大学CAD&CG)
      • (2004年)圆环与圆环求交算法中初始点的计算 (王日昀 宁涛 席平 唐荣锡/北航飞行器制造工程系)
      • (2005年6月)圆环面/球面求交算法 (陈小雕 雍俊海 郑国勤 孙家广/清华计算机科学与技术系)
      • (2007年)采用“结式法”的圆环面和球面求交算法(谌炎辉 徐武彬/广西工学院机械系)
      • (1976)Levin J∙A parametric algorithmfor drawing pictures of solid ob-jects composed of quadric surfaces [J]∙Communications of the ACM‚1976‚19(10)
      • (1995)Miller J ‚Goldman R∙Geometric algorithms for detecting and calculating all conic sections in theintersection of any t wo natural quadric surfaces [J]∙Graphical Models and I mage Processing ‚1995‚57(1) :55~66
      • (1989)Peigl L∙Constructive method of intersecting natural quadrics representedin tri mmed surface for m [J]∙Computer-Aided De-sign ‚1989‚21(4) :201~212
      • (1983)Sarraga R∙Algebraic methods for intersections of quadric sur-faces in GMSOLI D[J]∙Computer Vision ‚Graphics and I mage Processing ‚1983‚22(2) :222~238
      • (1998)Ki m K‚Ki m M S∙Torus/sphereintersection based on a configu-ration space approach [J]∙Graphical Models and I mage Process-ing ‚1998‚60(1) :77~92
      • (1998)Zuo Zheng∙Intersection ‚classification and application of geo-metric modeling [ D]∙Beijing :Tsinghua University ‚1998(in Chinese)( 左  征∙几何造型中的求交分类及其应用[ 博士学位论文]∙北京:清华大学‚1998)

1 曲线曲线

1.1 直线/二次曲线

直接解析法计算交点。

1.2 二次曲线/二次曲线

// Todo

1.3 其他类型

// Todo

2 曲线曲面

2.1 直线/二次曲面,二次曲线/平面

直接解析法计算交点。

2.2 二次曲线/二次曲面

// Todo

2.3 其他类型

// Todo

3 曲面曲面

3.1 平面/二次曲面

直接解析法计算交线。

3.2 二次曲面/二次曲面

// Todo

3.3 其他类型

(1995年4月)隐式曲面/参数曲面的求交算法 (冉瑞江 王亚平 唐荣锡/北航飞行器制造工程系)

在这里插入图片描述
在这里插入图片描述

思路:

  • 1.将n次代数曲面方程用齐次坐标的表示;
  • 2.将参数曲面用NURBS表示,然后插入重复节点,变成一组有理Bezier曲面,平且改写成齐次幂级数形式;
  • 3.将2中的齐次坐标表示代入1中,得到关于参数u、v的方程。(该方程就表示uv参数域的一条平面曲线);

然后分析讨论平面代数曲线 F ( u , v ) = 0 F(u,v)=0 F(u,v)=0的性质。

在这里插入图片描述

追踪:
在跟踪之前,对于每一个特征初始点,记录其连接次数,即从该点开始或者终止的单调分枝数。
在这里插入图片描述

估算下一个点:用切线、或者用密切圆的方法计算近似点
计算精确的下一个点:
在这里插入图片描述

注意:一点想法和改进,这个地方需要两次迭代计算两个最近点,会不会是效率降低?
我使用的方法是,直接把当前点作为初始值,放入方程组中迭代,会得到一个精确交点。这样计算次数会不会少一些?但是存在一种可能,就是可能得到的新的点离当前初值点跑了一些距离。不知道本文中用两个最近点的迭代会不会存在这种问题?

文中说到:跟踪时要 注 意 不 要 进 入 交 线 的另一 分枝 和 重 复 跟 踪 同 一 交线分枝, 算 法可 靠性的关键在于适当控制步长和精度 。
在这里插入图片描述

// 这和我当时做求交考虑到的不谋而合。
在这里插入图片描述

// 这个地方我当时做求交的时候也考虑到了,为了避免这种情况,会在出参数域的时候做一个判断,当跨出参数域的那一刻,与边界计算出精确的交点,并停止继续计算边界外的交点。

(1997年12月)平面向量场与曲率分析在曲面求交中的应用(宁涛 马德昌 王亚平 唐荣锡/北航飞行器制造工程系)

在这里插入图片描述
在 曲面 求 交 的 跟 踪 算法 中,主 要 有 三 项关 键 技 术:(1)初 始跟 踪 点集 完 备 性(2) 数 值 方法稳 定 性(3)误差准则一致性。

在这里插入图片描述

如果找 到 两 张 曲 面 的所有 共 线法 矢, 沿共线 法 矢 点对 两 曲面 进 行分割,那 么 所得 到 的小曲面 片 没 有交线 环. 这 样 就保 证 了不 遗漏 任何交线 环.

对于相切点的位置追踪方向的计算:
在这里插入图片描述

//这个计算方法和我当时做求交的时候,处理相切情况计算切向的方法一样。并且确实可能会出现多解情况,也就是交线会在这个地方出现多个分支。最好根据前一次的跟踪方向,来确定当前走哪个分支,这样计算的交线走向更自然。
跟踪步长的计算方法:
在这里插入图片描述

//“ 根据 曲 率估 计 跟 踪步长 是 毫无 意 义 的”。确实如此,在实际工程中,我在估算跟踪步长的时候,虽然通过曲率计算得到估计步长,但还要做其他的限制处理。并且步长的估算公式最好是连续变化的。
对于相切点的位置跟踪步长的计算方法:
在这里插入图片描述

// 看起来这个估算曲率的方法也不错。因为曲率本来是用来估算步长的,不需要精确,所以采用本文中的方法似乎是个不错的选择。
// 我做求交采用的是利用更高阶偏微分计算相切点的曲率,计算方法可以从某一篇分析交线的微分的论文中找到。但是采用更高阶偏微分计算曲率计算量比较大,并且不是很稳定,因为可能像nurbs曲面没有连续的更高阶的微分。

曲 面 求 交 的 主 程 序 由三 部分构成:(1)计算 两 张 曲 面 的 包 围 盒,利用包 围盒 进 行求交粗判;(2) 计算 两张 曲 面 形 成的平 面 向 量 场, 用Kriezis方 法 求 出 临界 点。然 后, 利用 曲线/曲 面 求交算 法 计算 初始跟踪点 和 跟踪 方 向。(3)对外部 初 始跟 踪点 和 内 部 初 始 跟 踪 点分别 进行 跟 踪,得到 所有 交 线。外 部初始跟踪点 是 指 至 少在一 张 曲 面 边 界上 的 初 始跟 踪点,内部 初 始 跟 踪点 是指 不 在 任何 一张 曲 面 边界 上 的 初 始跟踪 点.

当跟踪完 所有 外 部 初 始 跟踪 点 后, 所得交线均与曲 面 边 界 有交。如 果此 时 内 部 初 始跟 踪点集非 空, 那 么两 曲 面 有 内部交 线 环。对 内 部 交 线 环的 跟 踪 较 为 简 单, 这 里 不再介 绍。
对外部初始跟踪 点 的 跟 踪 过 程:
在这里插入图片描述
// 这里对于外部跟踪点的处理和我当时做求交实现的方法基本一样。
// 或者说其实本文中所描述的求交的理论方法,和我当时在实践中摸索的的实现曲面求交的方法基本完全一致。所以本文很具有实用价值,提到了很多工程实现时的关键问题。

(1999年3月)一种参数曲面与隐式曲面的求交算法(余正 彭群生 马利庄/浙江大学CAD&CG)

在这里插入图片描述

生成 h ( u , v ) = 0 h(u, v)=0 h(u,v)0的等值线,其主要算法步骤如下:
1) 逐个计算每一网格单元与等值线的交点;
2) 连接该单元与等值线的交点,生成该单元内的一等值线的线段;
3) 由一系列单元内的等值线的线段构成该网格中的等值线.
计算单元的各边与等值线的交点,假设函数 h( u,v) 在单元内呈线性变化,可以采用顶点判定和边上插值的方法计算交点,具体步骤如下:
在这里插入图片描述

图(a)二维标量场抽取参数曲面的参数域的等值线,该等值线在参数曲面上的映射,便得到参数曲面与隐式曲面的交线c,如下图(b)。
在这里插入图片描述

在这里插入图片描述

评论:对于计算初始点,用网格法,计算h( u,v)不用迭代也很快,确实不失为一个好方法。但是网格划分的密度是一个问题,划分太密计算量也很巨大,划分太稀可能会漏掉某些初始点(譬如说小环或者孤立点)。

(2004年)圆环与圆环求交算法中初始点的计算 (王日昀 宁涛 席平 唐荣锡/北航飞行器制造工程系)

在这里插入图片描述

在曲面求交方面做了大量的研究并相继推出很多优秀的算法 [1]~[5] 。算法大体上可归为 4 类:
分割法 (subdivision method),网格计算法 (lattice evaluation),几何法 (geometric method),追踪法 (marching method)。

先通过某种求交方法确定各交线环上的一个交点,根据交线的几何性质,按照一定步长计算该条交线上下一交点的近似值,再应用迭代法求得精确的交点。沿交线走向不断前进,直至遍历整条交线。追踪法求交的原理如图 1 所示。
在这里插入图片描述

追踪法求交的优点是在求得首交点后搜索交线的其余交点的速度非常快,且适用范围广。参数曲面,只要曲面不存在非正则点,并可以求得曲面上任意点的坐标位置、法矢、切矢等几何信息,就可以用追踪法求交。
缺点:追踪法的问题是目前尚无有效的方法来求得所有交线的初始点。在有些情况下寻求初始点所花费的时间远大于追踪过程所节省的时间,而为了节省寻求初始点的时间,又可能漏掉某些交线,当在孤立交点和比较小的交线环时尤甚。

交线类型分析:
一般曲面相交交线类型包括:开环线,闭环线,尖点,切点。而在圆环与圆环相交中不存在开环线,且尖点也是以切点的形式存在,所以主要任务就是发现所有的切点,并计算出闭环线的初始点。

评论:这个分析方法不是很好,而且会用到了在接近的区域细分,实现起来复杂,性能可能也一般。
我的思路:对于两个圆环面,是否可以考虑第二个圆环面中心圆和内外圆在第一个圆的平面上的投影曲线(二次曲线),然后计算二次曲线之间的交点,估算出大概的相交区域,然后利用附近位置的等参线(截面圆)与另外一个圆环计算交点(作为初始交点),或者在这种区域附近将两个圆环面细分计算初始交点。

(2005年6月)圆环面/球面求交算法 (陈小雕 雍俊海 郑国勤 孙家广/清华计算机科学与技术系)

在这里插入图片描述
求交算法在保持拓扑稳定性上仍然存在着两大问题:一是求交分支漏解,二是使用跟踪法时在某些情况下会发生分支跳跃。

本文结合点圆最近距离计算与区间中点测试求交方法[11]提出了统一求解所有三种类型的圆环面/球面求交问题的算法。
(注:球面(球心)与圆环面的最近距离是不是也不难计算?是不是可以利用一下,对求交有帮助?)。正好,论文中也利用了一些方法,计算了球心到圆环面的最小和最大平方距离。

Δ = l 1 2 + l 2 2 + l 3 2 Δ=l_1^2 +l_2^2 +l_3^2 Δl12l22l32(6)
其中:
l 1 =- 2 r ( x 0 c o s u + y 0 s i n u - R ) l 2 =- 2 r z 0 l 3 = x 0 2 + y 0 2 + z 0 2 + r 2 + R 2 - δ 2 - 2 R ( x 0 c o s u + y 0 s i n u ) l_1 =-2r( x_0 cos u +y_0 sinu-R)\\ l_2 =-2rz_0\\ l_3 = x^2_0 +y^2_0 +z^2_0 +r^2 +R^2 -δ^2 -2R( x_0 cos u +y_0 sin u) l1=-2rx0cosuy0sinuRl2=-2rz0l3x02y02z02r2R2δ22Rx0cosuy0sinu

l 1 l_1 l1, l 2 l_2 l2 全为0,则圆 U 在球面上或者与球面无交;否则Δ的符号与圆U 和球面的相异交点的个数有如下关系:
Δ>0有两个相异交点
Δ=0有一个相异交点
Δ<0没有交点

式(6) 对交曲线的拓扑结构分析来说很重要,故称它为关键方程。

圆环面和球面最多只有两条交线????

评论:很有效的方法,可以实际中实现用起来。

(2007年)采用“结式法”的圆环面和球面求交算法(谌炎辉 徐武彬/广西工学院机械系)

在这里插入图片描述

在这里插入图片描述

讨论圆环面小圆和球面截圆(指球面在XOZ平面上所截的圆)的位置关系给出了圆环面和球面不相交、交线为圆、交线为孤立点、交线中自交点和尖点及交线的区间等。

评论:这篇文章与上一篇文章基本相似,只不过讲述的偏几何一点(上一篇更偏代数),更容易理解一点。

思路:可用如下两个方向的投影快速判断有没有交和交的大概位置。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kaDWsc9G-1677826906311)(en-resource://database/568:1)]

(1976)Levin J∙A parametric algorithmfor drawing pictures of solid ob-jects composed of quadric surfaces [J]∙Communications of the ACM‚1976‚19(10)

(1995)Miller J ‚Goldman R∙Geometric algorithms for detecting and calculating all conic sections in theintersection of any t wo natural quadric surfaces [J]∙Graphical Models and I mage Processing ‚1995‚57(1) :55~66

(1989)Peigl L∙Constructive method of intersecting natural quadrics representedin tri mmed surface for m [J]∙Computer-Aided De-sign ‚1989‚21(4) :201~212

(1983)Sarraga R∙Algebraic methods for intersections of quadric sur-faces in GMSOLI D[J]∙Computer Vision ‚Graphics and I mage Processing ‚1983‚22(2) :222~238

(1998)Ki m K‚Ki m M S∙Torus/sphereintersection based on a configu-ration space approach [J]∙Graphical Models and I mage Process-ing ‚1998‚60(1) :77~92

(1998)Zuo Zheng∙Intersection ‚classification and application of geo-metric modeling [ D]∙Beijing :Tsinghua University ‚1998(in Chinese)( 左  征∙几何造型中的求交分类及其应用[ 博士学位论文]∙北京:清华大学‚1998)

//Todo
// 未完,更新中

注:1.若有写的不当之处还请谅解并指正。2.以上论文标题即为出处引用,后面就不再单独做详细的文献引用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/386024.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件传输协议的五种安全文件传输替代方案

对安全文件传输协议的需求,过去,文件传输协议(FTP)是发送文件的常用协议。这是一个更简单的时期,安全性比今天要少得多。 但是随着黑客变得越来越复杂,他们发现FTP缺乏安全性。他们知道FTP可以通过有限的方式来确保访…

【IoT】压力式电子脉搏器设计

脉搏是指单位时间内心脏跳动的次数,一般指每分钟的心跳次数,它是衡量人体健康指数的重要指标之一。然而,传统的诊脉手段受到人为因素影响较多,在一定程度上降低了判断病情的准确性,随着电子科学技术的迅猛发展,就出现了电子脉搏计…

# 技术详解: 利用CI同步文章以及多端发布

技术详解: 利用CI同步文章以及多端发布 技术详解: 利用CI同步文章以及多端发布 前言文章的同步实现的细节 思路文章元数据的定义和提取修改文章的优化本地图片资源上传CDN并替换本地link 终于到了 CI 的部分了最后来一些碎碎念 前言 前几天我更新了一篇简单技术总结之后&am…

用C语言写一个自己的shell-Part Ⅲ--built-in commands

Part Ⅲ–Built-in commands Just as we have mentioned in part Ⅱ,the exec family of functions can’t perform built-in commands like cd. It’s like The reason for this is that cd is not a system command like ls or pwd.We need to write and inv…

云原生下最火的API网关-APISIX

文章目录一、APISIX是什么?二、APISIX有哪些功能?三、APISIX对比Spring Cloud Gateway、Zuul等其他网关有哪些优势?四、从0到1部署APIXSIX步骤1:准备环境步骤2:安装依赖步骤3:安装APISIX步骤4:配…

成都待慕电商:抖音虚假宣传虚构被比较价格违规细则

为了保护抖音消费者权益,规范创作者商品分享推广秩序,抖音平台制定《「虚假宣传-虚构被比较价格」违规细则》。 来看详细内容:一、什么是“被比较价格”?被比较价格:指创作者通过价格比较的方式宣传商品价格优惠时&…

opencv:运用cv2给视频加水印

前一段时间学了一下计算机视觉的相关知识,今天想了想,觉得可以利用cv2这个模块给视频加上水印,这样从一些方面也可以表明这个视频的原创。 1. 实现原理 小编的实现原理就是使用cv2模块读取视频文件,然后获取到每一张图片,在图片上的相应位置写上相应的字符串(小编最初打算…

MR虚拟直播是什么?

阿酷tony / 2023-3-3 / 长沙MR虚拟直播是通过机器人、虚拟人物、虚拟舞台或虚拟现实技术,将主播和场景实时转化的互动直播方式。MR技术(混合现实技术)结合大数据、人工智能等技术,可以在虚拟直播中实现更多的自由度和互动性&#…

认识BUG

如何描述 bug一个合格的 bug 描述应该包括以下几个部分:发现问题的版本开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障,并且版本的标识也有利于统计和分析每个版本的质量。问题出现的环境环境分为硬件环境和软件环境&am…

GUI 之 Tkinter编程

GUI 图形界面,Tkinter 是 Python 内置的 GUI 库,IDLE 就是 Tkinter 设计的。 1. Tkinter 之初体验 import tkinter as tkroot tk.Tk() # 创建一个窗口root.title(窗口标题)# 添加 label 组件 theLabel tk.Label(root, text文本内容) theLabel.p…

学习使用Android开发者者文档

Android Lint 错误信息中可看到不兼容代码所属的API级别。也可以在ANdroid开发者文档中查看各API级别特有的类和函数。 越早熟悉使用开发者文档越有利于开发,当然我们不可能记住所有的Android SDK中海量信息,因此学会查阅SDK文档,不断学习新的…

ContextLoaderListener监听器和SSM整合

ContextLoaderListener监听器Spring提供了监听器ContextLoaderListener,实现ServletContextListener接口,可监听ServletContext的状态,在web服务器的启动,读取Spring的配置文件,创建Spring的IOC容器。web应用中必须在w…

关于linux采用桥连接网络模式

关于linux(centos)采用桥连接网络模式 下载安装VmWare,并创建centos虚拟机 找到自己的虚拟机,点击编辑虚拟机设置-网络适配器-桥接模式 点击编辑-虚拟网络编辑器 点击更改设置-自动桥接 进入系统-修改网络配置文件 #进入到…

一个使用 react+vite3+ts+react-router-dom6v Hooks Admin搭建的轻量级后台管理模板。

react18-vite3-ts-antd4react-router-dom6v 前言 之所以搭这个模板,对于工作上业务需求老是变来变去,就觉得很烦,干脆搭了个admin模板,这样自己熟悉,好根据业务的需求进行一个修改。很多人会说后端管理系统模板都差不…

一文看懂REE OS、TEE OS、CA以及TA概念、架构、流程

目录 一、概念 二、使能方式 三、TEE软件框架 四、TEE软件流程 一、概念 REE(Rich Execution Environment):比如Android系统,是一个开放的环境,容易收到恶意软件的攻击,比如敏感数据被窃取、数字版权被…

Mask R-cnn 代码运行报错总结

Mask R-cnn 代码运行报错总结环境版本1. 数据集下载与参数配置2. 运行报错开始报错1报错2报错3报错4报错5报错6参考文章 文章1文章2 环境版本 TensorFlow 2.1.0Python 3.7keras 2.3.1 1. 数据集下载与参数配置 下载链接 https://github.com/matterport/Mask_RCNN/releases …

MySQL存储引擎详解及对比和选择

什么是存储引擎? MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善…

Java关键字、标识符、变量数据类型

文章目录关键字标识符标识符的命名规则标识符的命名规范变量变量的数据类型整数类型浮点类型浮点型精度字符类型布尔类型关键字 定义:被 Java 语言赋予了特殊含义,用做专门用途的字符串(或单词)HelloWorld 案例 中,出现…

7年测试工程师,裸辞掉17K的工作,想跳槽找更好的,还是太高估自己了....

14年大学毕业后,在老师和朋友的推荐下,进了软件测试行业,这一干就是7年时间,当时大学本来就是计算机专业,虽然专业学的一塌糊涂,但是当年的软件测试属于新兴行业,人才缺口比较大,而且…

南卡Neo骨传导运动耳机正式发布,打造音质最强款骨传导耳机

最近中国专业骨传导领先品牌NANK南卡发布全新Neo系列骨传导运动耳机,全新来袭的南卡Neo骨传导运动耳机主打音质使用体验,耳机配置上做到更为强劲升级优化,支持一体化机身,首发无线充设计,IPX6等级防水,升级…