几何算法——4.交线(intersection curve)的表达与参数化、微分性质

news2024/11/9 1:46:24

几何算法——4.曲面求交的交线(intersection curve)的表达与参数化、微分性质

  • 1 关于曲面求交的交线表达
  • 2 交线的微分性质
  • 3 交线的参数化
  • 4 修正弦长参数化的微分性质

1 关于曲面求交的交线表达

两个曲面求交,比较经典的方法是用跟踪法(具体算法此步就不再详述),跟踪法得到的是若干个交点信息的列表(下文称“交点表”)。

在交点表中的每一个交点,都会保存有【交点坐标point,在曲面s1的uv参数、曲面s2的uv参数,还可以附加其他信息譬如是否是奇异点等】

这样若干个这样的交点,也可以用来插值成nurbs曲线,作为交线的简化形式。但是我们为了保证交线的精确性,创建了交线这种曲线作为一种基本的类型。

求交结果的记录:

struct IntPoint
{
	Point3d position;   // position
	UVParam uvParam0;   // surface0 parameter
	UVParam uvParam1;   // surface1 parameter
	double param;       // curve parameter
}

std::vector<IntPoint> intPointsChart;

由于交线表达的复杂性,存在很多特殊的地方(譬如说奇异点等),所以交线的定义或复杂一些,包含更多的信息:

struct IntCurve
{
	// the surfaces information
	std::shared_ptr<Surface> m_surface0;
	std::shared_ptr<Surface> m_surface1;
	intPointsChart intPtsChart;
	//Terminator start;
	//Terminator end;
	bool isParametried;
};

2 交线的微分性质

既然将交线作为一种基本曲线,那么肯定就需要计算交线的一些基本的微分性质等。

在使用跟踪法计算交线的的时候,会利用两个曲面的法相计算交线的切向;利用两个曲面的偏u、偏v计算交线的曲率等。具体的计算方法,甚至于两个曲面相切的情况微分性质的计算方法可以参考叶修梓的论文 1 ^1 1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1 ^1 1:Differential geometry of intersection curves of two surfaces. 当然也有很多其他论文可以参考,但是我遇到过有的论文有推导的公式有笔误,叶修梓这篇文章我仔细推导过没有问题。

3 交线的参数化

上一篇ppt中讲的是微分计算,但是这个计算是利用第二基本形式计算推导的,可以理解为弧长参数化计算的

而在实际交线计算中,有需要反求参数等这种操作,如果用弧长参数化,参数节点值计算、反求参数等会特别麻烦,需要大量计算会影响效率

因此比较方便快捷的方法是积累弦长参数化的方法,简单来说就是利用交点表中的点当作折线段来计算参数区间(类似polyline),但是用积累弦长参数化存在的问题是在交点处不连续而曲线实际是连续的

因此,采用修正弦长参数化方法,在交点处根据前后弦的方向转交计算一个缩放因子,保证连续性

注:曲面第一第二基本形式、弦长参数化、修正弦长参数化方法可参考the nurbs book和施法中的计算机辅助几何设计。

4 修正弦长参数化的微分性质

在说修正弦长参数化的微分性质前,先说一下弦长参数化的微分性质:
从弦长参数化到弧长参数化,差的就是一个从弦长参数化到弧长参数化的曲率因子,在弧长参数化的微分上,乘上一个弦长到弧长参数化的曲率因子就行

从修正弦长参数化到弦长参数化,差的就是一个转角处的修正因子,也是乘上一个修正因子就行
在这里插入图片描述

如果用弧长参数化的方法,不好的地方在于,计算交点处节点值慢,节点值要用高斯积分计算弧长

还有一种参数化方法?就是弦法平面与线求交的交点一一对应,反求参数会快很多,但是这个地方存在一个问题就是,反求参数计算方便了,但是反求参数计算的不是垂足点?这样算是一种参数化?
在这里插入图片描述

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

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

相关文章

wsl使用vscode搭建自己的MySQL

装wsl装MySQL装wsl 我已经装好了,就不说了 装MySQL 安装 MySQL 服务器&#xff1a;终端命令行输入sudo apt install mysql-server 安装完成后&#xff0c;MySQL 服务器会自动启动并在 Ubuntu 启动时启动。您可以使用以下命令检查 MySQL 服务器是否正在运行&#xff1a;sudo ser…

【三十天精通Vue 3】第六天 Vue 3 计算属性和监听器详解

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: 三十天精通 Vue 3 文章目录引言一、Vue 3 计算属性概述1.1 计算属性的简介1.2 计算属性的分类…

第二十章 案例TodoList之动态数据

我们之前已经实现了静态的组件拆分&#xff0c;既然是静态说明数据就是死的&#xff0c;显然这不是我们需要的结果&#xff0c;之前我们学习了React组件&#xff0c;知道组件里面的状态数据驱动了页面的显示&#xff0c;每个组件都有属于自己的状态数据。接下来我们改造组件使得…

SAR ADC系列25:作业和上机实践

作业&#xff1a; 异步SAR逻辑中VALID信号如何产生&#xff1f;答&#xff1a;OUTP和OUTN与非。单纯通过减小“比较器环路”的延时(t1t22*t32*t4)的方式来提升ADC的转换速率可行吗&#xff1f;为什么&#xff1f;答&#xff1a;不可行&#xff0c;还要考虑CDAC建立的速度&…

【ARMv8 编程】A64 数据处理指令——位域字节操作指令

有些指令将字节、半字或字扩展到寄存器大小&#xff0c;可以是 X 或 W。这些指令存在于有符号&#xff08;SXTB、SXTH、SXTW&#xff09;和无符号&#xff08;UXTB、UXTH&#xff09;变体中&#xff0c;并且是适当的位域操作指令。 这些指令的有符号和无符号变体都将字节、半字…

【失业即将到来?】AI时代会带来失业潮吗?

文章目录前言一、全面拥抱AIGC二、AI正在取代这类行业总结前言 兄弟姐妹们啊&#xff0c;AI时代&#xff0c;说抛弃就抛弃&#xff0c;真的要失业了。 一、全面拥抱AIGC 蓝色光标全面暂停外包&#xff1f; 一份文件截图显示&#xff0c;中国知名4A广告公司&#xff0c;蓝色光…

汇编第二次上机实验(续第一次,字符串比较及双重循环)【嵌入式系统】

汇编第二次上机实验&#xff08;续第一次&#xff0c;字符串比较及双重循环&#xff09;【嵌入式系统】前言推荐说明汇编第二次上机实验&#xff08;续第一次&#xff0c;字符串比较及双重循环&#xff09;内容1 sort说明流程图代码编写结果分析2 string流程图代码编写结果分析…

Nginx的安装、反向代理、负载均衡及部署项目

Nginx 一、Nginx简介 Nginx称为:负载均衡器或 静态资源服务器:html,css,js,img ​ Nginx(发音为“engine X”)是俄罗斯人编写的十分轻量级的HTTP服务器,是一个高性能的HTTP和反向代理服务器&#xff0c;同时也是一个IMAP/POP3/SMTP 代理服务器。Nginx是由俄罗斯人 Igor Syso…

DOM(上)

DOM&#xff08;文档对象模型&#xff09;&#xff1a;处理可扩展标记语言(HTML或XML&#xff09;的标准编程接口&#xff0c;可以改变网页的内容、结构和样式。DOM树&#xff1a; …

大数据项目实战之数据仓库:电商数据仓库系统——第2章 数据仓库建模概述

第2章 数据仓库建模概述 2.1 数据仓库建模的意义 如果把数据看作图书馆里的书&#xff0c;我们希望看到它们在书架上分门别类地放置&#xff1b;如果把数据看作城市的建筑&#xff0c;我们希望城市规划布局合理&#xff1b;如果把数据看作电脑文件和文件夹&#xff0c;我们希…

CMake——从入门到百公里加速6.7s

目录 一、前言 二、HelloWorld 三、CMAKE 界面 3.1 gui正则表达式 3.2 GUI构建 四 关键字 4.1 add_library 4.2 add_subdirectory 4.3 add_executable 4.4 aux_source_directory 4.5 SET设置变量 4.6 INSTALL安装 4.7 ADD_LIBRARY 4.8 SET_TARGET_PROPERTIES 4.9…

[JavaEE]----Spring03

文章目录Spring_day031&#xff0c;AOP简介1.1 什么是AOP?1.2 AOP作用1.3 AOP核心概念2&#xff0c;AOP入门案例2.1 需求分析2.2 思路分析2.3 环境准备2.4 AOP实现步骤步骤1:添加依赖步骤2:定义接口与实现类步骤3:定义通知类和通知步骤4:定义切入点步骤5:制作切面步骤6:将通知…

测试-子查询及数据更新

测试-子查询及数据更新 目录测试-子查询及数据更新1、修改borrow表增加一列&#xff1b;修改日期数据&#xff08;两条语句完成&#xff09;题目代码题解2、 SQL更新&#xff1a;删除-删除“吴宾”的所有成绩记录题目代码3、SQL查询&#xff1a;查询没有被订购的商品题目代码4、…

CMake GUI工具使用 MinGW 64构建工程

系列文章目录 文章目录系列文章目录前言一、open Project是灰色&#xff1f;前言 CMake GUI 打开 CMake GUI。 在 “Where is the source code” 字段中&#xff0c;选择 Krita 源代码目录&#xff1a;E:/krita-dev/krita。 在 “Where to build the binaries” 字段中&#x…

9.Java面向对象----封装

Java面向对象—封装 面向对象简称 OO&#xff08;Object Oriented&#xff09;&#xff0c;20 世纪 80 年代以后&#xff0c;有了面向对象分析&#xff08;OOA&#xff09;、 面向对象设计&#xff08;OOD&#xff09;、面向对象程序设计&#xff08;OOP&#xff09;等新的系统…

Python 小型项目大全 26~30

二十六、斐波那契 原文&#xff1a;http://inventwithpython.com/bigbookpython/project26.html 斐波那契数列是一个著名的数学模式&#xff0c;被认为是 13 世纪意大利数学家斐波那契的杰作&#xff08;尽管其他人发现它的时间更早&#xff09;。序列从 0 和 1 开始&#xff0…

SAR ADC系列16:CDAC上机实践+作业

目录 作业和上机实践&#xff1a; 通过仿真确定桥接电容Ca的尺寸 采样技术和CDAC相结合 电容校正 为什么在100...0和011...1之间最差&#xff1a;电容的瓶颈在MSB上面 为什么INL最差也发生在中间Code 其他问题 频谱混叠 上级板采样网络时序问题 共模相关问题 关于V…

数据库----------约束、主键约束

目录 1.简介 1.概念 2.作用 3.分类 2.主键约束 1.概念 2.操作 1.添加单列主键 2.添加多列联合主键 3. 通过修改表结构添加主键 4.删除主键 1.简介 1.概念 约束英文: constraint 约束实际上就是表中数据的限制条件 2.作用 表在设计的时候加入约束的目的就是为了…

系统无损迁移、硬盘系统复制完整教程(常用于升级更大硬盘的场景)

阿酷TONY / 2023-4-15 / 长沙 这个教程的应用背景或场景是这样的&#xff1a; 原本使用的ThinkPad笔记本电脑是250G的SSD固态硬盘&#xff0c;使用了一两年后&#xff0c;空间不足了&#xff0c;这个时候需要换一块500G或更大的SSD硬盘&#xff0c;那么问题来了&#xff0c;通…

人员跌倒识别检测系统 yolov7

人员跌倒识别检测系统通过PythonYOLO7网络模型算法&#xff0c;人员跌倒识别检测算法模型对现场画面中有人员倒地摔倒行为实时分析预警&#xff0c;发现则立即抓拍存档告警同步提醒后台值班人员及时处理。YOLOv7 的发展方向与当前主流的实时目标检测器不同&#xff0c;研究团队…