当前位置: 首页 > news >正文

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

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

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

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

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

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

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

求交结果的记录:

struct IntPoint
{Point3d position;   // positionUVParam uvParam0;   // surface0 parameterUVParam uvParam1;   // surface1 parameterdouble param;       // curve parameter
}std::vector<IntPoint> intPointsChart;

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

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

2 交线的微分性质

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

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

3 交线的参数化

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

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

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

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

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

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

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

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

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

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

相关文章:

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

几何算法——4.曲面求交的交线&#xff08;intersection curve&#xff09;的表达与参数化、微分性质1 关于曲面求交的交线表达2 交线的微分性质3 交线的参数化4 修正弦长参数化的微分性质1 关于曲面求交的交线表达 两个曲面求交&#xff0c;比较经典的方法是用跟踪法&#xf…...

【GPT】让你事半功倍特别好用的5个GPT工具

文章目录前言一、现在还能开通ChatGPT4.0吗&#xff1f;二、推荐五款与ChatGPT的相关实用工具1.一款浏览器插件&#xff1a;ChatGPT for Google2.一款生成图片的AI工具&#xff1a;midjourney3.推荐两款AI自动生成PPT&#xff1a;闪击PPT、mindshow4.识别PFD文件内容对话&#…...

人工智能大模型多场景应用原理解析

前言 在上篇文章《人工智能大模型之ChatGPT原理解析》中分享了一些大模型之ChatGPT的核心原理后&#xff0c;收到大量读者的反馈&#xff0c;诸如:在了解了核心原理后想进一步了解未来的发展趋势(比如生成式人工智能和元宇宙能擦出什么样的火花&#xff1f;)&#xff0c;大模型…...

SpringBoot默认包扫描机制与默认配置文件

文章目录一、SpringBoot默认包扫描机制 - 示例二、SpringBoot默认扫描包机制 - 原理三、SpringBoot手动扫描包机制 - 原理&示例四、ComponentScan与MapperScan五、SpringBoot默认配置文件一、SpringBoot默认包扫描机制 - 示例 默认情况下&#xff0c;扫描启动类同级及其子…...

RabbitMq 消息可靠性问题(一) --- publisher发送时丢失

前言 消息从生产者发送到exchange, 再到 queue, 再到消费者。这个过程中有哪些有消息丢失的可能性呢&#xff1f; 发送时丢失&#xff1a; 生产者发送的消息未送达 exchange消息到达 exchange 后未到达 queue MQ 宕机&#xff0c;queue将消息丢失consumer 接收到消息后未消费…...

Java初识泛型

目录 一、包装类 1、基本数据类型和对应的包装类 2、装箱和拆箱 3、自动装箱和自动拆箱 二、什么是泛型 三、引出泛型 1、泛型的语法 四、泛型类的使用 1、语法 2、示例 3、类型推导(Type Inference) 六、泛型如何编译的 1、擦除机制 2、为什么不能实例化泛型类…...

寸照换底色技巧大全,超详细图文教程

在日常的设计工作中&#xff0c;我们常常需要将图片的背景色进行修改&#xff0c;以适应不同的场景和需求。其中最常用的方法就是寸照换底色技巧。本文将为大家介绍一些常见的寸照换底色技巧&#xff0c;并提供超详细的图文教程&#xff0c;帮助大家轻松完成这项任务。 一、使…...

这篇文章价值很大:股票历史分时成交数据怎么简单获取?【干货】

文章目录前言一、准备二、使用步骤1.引入库2&#xff0c;使用这个API查询历史分时数据&#xff1a;3.查询完整历史分时数据4.其他查询方法参数格式&#xff1a;[(市场代码, 股票代码), ...]参数&#xff1a;市场代码, 股票代码, 文件名, 起始位置, 数量参数&#xff1a;市场代码…...

muduo源码剖析--Buffer

Buffer类 Buffer类是自定义处理数据输入缓冲的类&#xff0c;底层是vector< char >&#xff0c;通过readIdx和writeIdx将缓冲区分为3个部分&#xff0c;第一部分是预留的8字节已经读出的缓冲区字节数、第二部分是还未读出的部分、第三部分是可写的部分。 Buffer类的设计…...

AI人工智能简介和其定义

全称&#xff1a;人工智能&#xff08;Artificial Intelligence&#xff09; 缩写&#xff1a;AI / ai 人工智能研究 亦称智械、机器智能&#xff0c;指由人制造出来的可以表现出智能的机器。通常人工智能是指通过普通计算机程序来呈现人类智能的技术。该词也指出研究这样的智…...

python数据清洗

数据清洗包括&#xff1a;空值&#xff0c;异常值&#xff0c;重复值&#xff0c;类型转换和数据整合这里数据清洗需要用到的库是pandas库&#xff0c;下载方式还是在终端运行 &#xff1a; pip install pandas.首先我们需要对数据进行读取import pandas as pddata pd.read_cs…...

Python3 os.makedirs() 方法、Python3 os.read() 方法

Python3 os.makedirs() 方法 概述 os.makedirs() 方法用于递归创建目录。像 mkdir(), 但创建的所有intermediate-level文件夹需要包含子目录。 语法 makedirs()方法语法格式如下&#xff1a; os.makedirs(path, mode0o777)参数 path -- 需要递归创建的目录。 mode -- 权限…...

【Linux安装数据库】Ubuntu安装mysql并连接navicat

Linux系统部署Django项目 文章目录Linux系统部署Django项目一、mysql安装二、mysql配置文件三、新建数据库和用户四、nivacat链接mysql一、mysql安装 linux安装mysql数据库有很多教程&#xff0c;根据安装方式不同&#xff0c;相关的步骤也不同。可以参考&#xff1a;【Linux安…...

GaussDB工作级开发者认证—第一章GaussDB数据库介绍

一. GaussDB概述 GaussDB是华为基于openGauss自研生态推出的企业级分布式关系型数据库。具备企业级复杂事物混合负载能力&#xff0c;同时支持分布式事务强一致性&#xff0c;同城跨AZ部署&#xff0c;数据0丢失&#xff0c;支持1000的计算节点扩展能力&#xff0c;4PB海量存储…...

阿里张勇:所有行业都值得用大模型重新做一遍!

‍数据智能产业创新服务媒体——聚焦数智 改变商业“2023阿里云峰会”于4月11日在北京国际会议中心隆重召开&#xff0c;本次峰会以" 与实俱进 为创新提速&#xff01;"为主题&#xff0c;阿里巴巴集团董事会主席兼首席执行官张勇、阿里云智能集团首席技术官周靖人、…...

ES6(字符串的扩展与新增方法)

字符串的扩展与新增方法 1. 模板字符串 模板字符串解决了之前的字符串拼接 ESC下那个键&#xff1a;反引号&#xff08;&#xff09;包裹>替换引号 ${变量名/表达式/函数}>替换引引加加导致的代码冗余 //ES5(引引加加) $(#result).append(There are <b> basket.c…...

rk3568点亮LCD(lvds)

rk3568 Android11/12 适配 lvds 屏 LVDS&#xff08;Low Voltage Differential Signal&#xff09;即低电压差分信号。1994年由美国国家半导体&#xff08;NS&#xff09;公司为克服以TTL电平方式传输宽带高码率数据时功耗大、电磁干扰大等缺点而研制的一种数字视频信号传输方…...

全终端办公电子邮件集成方案

面临挑战 应用场景复杂&#xff0c;经常需要在不同终端进行切换&#xff0c;多屏、跨屏及移动办公要求高&#xff1b; 业务系统较多&#xff0c;需要同时支持多种业务的开展&#xff0c;对第三方应用集成及协同办公要求高&#xff1b; 对邮件系统的稳定及高效性要求高&#x…...

再不转型为ChatGPT程序员,有遭受降维打击的危险

Open AI在演示GPT-4的时候&#xff0c;有这么一个场景&#xff1a;给一个界面草图&#xff0c;就可以生成网页代码。这个演示非常简单&#xff0c;如果界面原型比较复杂呢&#xff1f;像这样&#xff1a;ChatGPT能不能直接生成HTML, CSS,JavaScript代码&#xff0c;把这个网页给…...

maven使用教程

文章目录IDEA创建maven项目maven项目必有得目录结构项目构建关键字cleanvalidatecompiletestpackageverifyinstallsitedeploy命令使用方法方法一 在terminal终端执行方法二 在右侧得maven中双击依赖管理在pom.xml下 导包、scope的传递范围、打包方式依赖冲突声明优先原则就近原…...

三步解锁QQ空间历史说说备份:数据留存与管理实用指南

三步解锁QQ空间历史说说备份&#xff1a;数据留存与管理实用指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory QQ空间数据备份是许多用户保存青春记忆和重要记录的需求。GetQzonehist…...

从防火墙到AI:企业级网络异常检测方案选型指南(2024最新版)

从防火墙到AI&#xff1a;企业级网络异常检测方案选型指南&#xff08;2024最新版&#xff09; 当某跨国零售企业遭遇持续3天的DDoS攻击导致线上业务瘫痪时&#xff0c;技术团队发现传统防火墙规则库已48小时未更新&#xff1b;而当某金融机构因AI模型误判正常促销流量为异常导…...

线程池核心参数与拒绝策略深度解析

前言 线程池是Java并发编程中最常用的工具之一&#xff0c;但很多开发者只停留在“会用”层面。面试中&#xff0c;面试官往往通过线程池考察你对并发编程的理解深度——参数如何设置&#xff1f;为什么这样设置&#xff1f;拒绝策略如何选择&#xff1f; 本文将深入剖析线程池…...

OpenClaw故障排查大全:百川2-13B量化模型接入常见报错解决

OpenClaw故障排查大全&#xff1a;百川2-13B量化模型接入常见报错解决 1. 当网关拒绝启动时 上周深夜调试OpenClaw时&#xff0c;我遇到了最棘手的网关启动失败问题。控制台反复报错Error: listen EADDRINUSE: address already in use :::18789&#xff0c;但用lsof -i :1878…...

手把手教你用kafka-storage.sh重新格式化Kafka KRaft集群数据目录(解决No meta.properties报错)

深入解析Kafka KRaft模式下数据目录重构与集群恢复实战指南 当你在深夜收到Kafka集群告警&#xff0c;发现所有节点因No meta.properties报错而集体罢工时&#xff0c;那种头皮发麻的感觉我太熟悉了。去年双十一大促前夜&#xff0c;我们因为临时调整存储路径而遭遇类似问题&am…...

对抗训练新玩法:用AdverIN攻击自己反而提升医学分割模型20%泛化性

医学影像分割的对抗训练革命&#xff1a;AdverIN如何让模型在新设备上表现更优 医学影像分析领域正面临一个尴尬的现实&#xff1a;实验室里表现优异的深度学习模型&#xff0c;在真实临床环境中常常"水土不服"。不同医院使用的扫描设备、成像协议差异导致的域偏移&a…...

别再手动写RTL了!用Vivado FIR Compiler IP核5分钟搞定一个低通滤波器

5分钟极速部署&#xff1a;用Vivado FIR Compiler IP核实现专业级低通滤波器 在FPGA信号处理领域&#xff0c;滤波器设计往往需要耗费工程师大量时间在RTL编码和验证上。但今天&#xff0c;我们将颠覆这一传统工作流程——通过Vivado的FIR Compiler IP核&#xff0c;即使没有深…...

ComfyUI与Stable Diffusion WebUI模型共享终极指南:如何通过extra_model_paths.yaml一键配置

ComfyUI与Stable Diffusion WebUI模型共享终极指南&#xff1a;如何通过extra_model_paths.yaml一键配置 在AI绘图领域&#xff0c;ComfyUI和Stable Diffusion WebUI&#xff08;简称WebUI&#xff09;各有优势。ComfyUI以其高度可定制的工作流著称&#xff0c;而WebUI则提供了…...

LabelMe高级应用:如何利用AI辅助标注提升效率300%

LabelMe高级应用&#xff1a;如何利用AI辅助标注提升效率300% LabelMe是一款强大的图像标注工具&#xff0c;支持多边形、矩形、圆形、线条、点和图像级标记等多种标注方式。对于AI训练数据准备工作而言&#xff0c;高效的标注工具能显著提升工作流效率。本文将详细介绍如何利…...

蓝桥杯 电池分组

...