过渡曲线的构造之平面PH曲线

news2025/6/24 0:39:13

平面PH曲线的构造及其相应性质

  • 平面PH曲线的构造及其相应性质
    • PH曲线理论
    • 三次PH曲线的构造及性质
    • 四次PH曲线的构造及性质
    • 五次PH曲线的构造及性质
      • 非尖点五次PH曲线
      • 尖点五次PH曲线
    • 参考文献

平面PH曲线的构造及其相应性质

过渡曲线常需要满足在连接点处位置连续、曲率连续以及切线方向向量连续的三个条件。关于过渡曲线的构造,前文已经总结了Béizer曲线和多项式曲线,本文主要对PH曲线构造的相关问题进行分析总结。

PH曲线理论

定义:若平面n次贝塞尔曲线P(t)=(x(t),y(t))的速端曲线具有PH性质,则称它为n次PH曲线。即存在多项式σ(t),使得 x ′ 2 + y ′ 2 = σ 2 ( t ) x^{'2}+y^{'2}=\sigma^2(t) x2+y2=σ2(t) 则称多项式P(t)为n次PH曲线。

贝塞尔曲线方程表达形式为: P ( t ) = ∑ j = 0 n p j B j n ( t ) , 0 ≤ t ≤ 1 P(t)=\sum_{j=0}^n p_j B_j^n (t) , 0≤t≤1 P(t)=j=0npjBjn(t),0t1其中伯恩斯坦基函数的形式为:
B j n ( t ) = C n j ( 1 − t ) n − j t j , 0 ≤ t ≤ 1 B_j^n(t)=C_n^j(1-t)^{n-j}t^j , 0≤t≤1 Bjn(t)=Cnj(1t)njtj,0t1

关于贝塞尔曲线的求导,参考知乎上的一篇文章,我在文末会放上参考网址。
贝塞尔曲线在 t 处的一阶导数为:
C ′ ( t ) = ∑ i = 0 n − 1 p i ( 1 ) B i , n − 1 ( t ) C^{'}(t)=\sum_{i=0}^{n-1} p_i^{(1)} B_{i,n-1}(t) C(t)=i=0n1pi(1)Bi,n1(t) p i ( 1 ) = n ( p i + 1 − p i ) p_i^{(1)}=n(p_{i+1}-p_i) pi(1)=n(pi+1pi)

三次PH曲线的构造及性质

设三次Bezier曲线为
P ( t ) = ∑ j = 0 3 P j B j 3 ( t ) , 0 ≤ t ≤ 1 P(t)=\sum_{j=0}^3 P_jB_j^3 (t) , 0≤t≤1 P(t)=j=03PjBj3(t),0t1
(1)x’(t)和y’(t)的形式验证

为确保P(t)为一个PH曲线,定义x‘(t)和y’(t)的形式如下:
x ′ ( t ) = w ( t ) [ u 2 ( t ) − v 2 ( t ) ] x^{'}(t)=w(t)[u^2(t)-v^2(t)] x(t)=w(t)[u2(t)v2(t)] y ′ = 2 w ( t ) u ( t ) v ( t ) y^{'}=2w(t)u(t)v(t) y=2w(t)u(t)v(t)
其中,w(t)=1
u ( t ) = u 0 b 0 1 ( t ) + u 1 b 1 1 ( t ) u(t)=u_0b_0^1(t)+u_1b_1^1(t) u(t)=u0b01(t)+u1b11(t) v ( t ) = v 0 b 0 1 ( t ) + v 1 b 1 1 ( t ) v(t)=v_0b_0^1(t)+v_1b_1^1(t) v(t)=v0b01(t)+v1b11(t)
代入Bernstein系数,因此有,
在这里插入图片描述
因此验证得: x ′ ( t ) = [ u 2 ( t ) − v 2 ( t ) ] , y ′ = 2 u ( t ) v ( t ) x^{'}(t)=[u^2(t)-v^2(t)],y^{'}=2u(t)v(t) x(t)=[u2(t)v2(t)]y=2u(t)v(t)
(2)控制顶点关系验证
由贝塞尔曲线的一阶导数公式有,
x ′ ( t ) = 3 ( p 1 x − p 0 x ) b 0 2 ( t ) + 3 ( p 2 x − p 1 x ) b 1 2 ( t ) + 3 ( p 3 x − p 2 x ) b 2 2 ( t ) x^{'}(t)=3(p_{1x}-p_{0x})b_0^2(t) +3(p_{2x}-p_{1x})b_1^2(t) + 3(p_{3x}-p_{2x})b_2^2(t) x(t)=3(p1xp0x)b02(t)+3(p2xp1x)b12(t)+3(p3xp2x)b22(t) y ′ ( t ) = 3 ( p 1 y − p 0 y ) b 0 2 ( t ) + 3 ( p 2 y − p 1 y ) b 1 2 ( t ) + 3 ( p 3 y − p 2 y ) b 2 2 ( t ) y^{'}(t)=3(p_{1y}-p_{0y})b_0^2(t)+3(p_{2y}-p_{1y})b_1^2(t)+3(p_{3y}-p_{2y})b_2^2(t) y(t)=3(p1yp0y)b02(t)+3(p2yp1y)b12(t)+3(p3yp2y)b22(t)
因此,联立两式有,
p 1 x − p 0 x = 1 3 ( u 0 2 − v 0 2 ) , p 2 x − p 1 x = 1 3 ( u 0 u 1 − v 0 v 1 ) , p 3 x − p 2 x = 1 3 ( u 1 2 − v 1 2 ) p_{1x}-p_{0x}=\frac{1}{3}(u_0^2-v_0^2),p_{2x}-p_{1x}=\frac{1}{3}(u_0u_1-v_0v_1),p_{3x}-p_{2x}=\frac{1}{3}(u_1^2-v_1^2) p1xp0x=31(u02v02),p2xp1x=31(u0u1v0v1),p3xp2x=31(u12v12) p 1 y − p 0 y = 1 3 ( 2 u 0 v 0 ) , p 2 y − p 1 y = 1 3 ( u 0 v 1 + u 1 v 0 ) , p 3 y − p 2 y = 1 3 ( 2 u 1 v 1 ) p_{1y}-p_{0y}=\frac{1}{3}(2u_0v_0),p_{2y}-p_{1y}=\frac{1}{3}(u_0v_1+u_1v_0),p_{3y}-p_{2y}=\frac{1}{3}(2u_1v_1) p1yp0y=31(2u0v0),p2yp1y=31(u0v1+u1v0),p3yp2y=31(2u1v1)
因此,控制顶点满足的关系整理如下:
在这里插入图片描述
(3)验证三次贝塞尔曲线称为PH曲线的充要条件是:
L 2 = L 1 L 3 ,且 θ 1 = θ 2 L_2=\sqrt{L_1L_3} ,且\theta_1=\theta_2 L2=L1L3 ,且θ1=θ2
其中几何边和角的位置分布如图所示:
在这里插入图片描述
定义d01表示p0和p1的距离,d12表示p1和p2的距离,d23表示p2和p3的距离。因此有:
在这里插入图片描述

因此可验证得到, L 2 = L 1 L 3 L_2=\sqrt{L_1L_3} L2=L1L3
接下来就是证明 θ 1 = θ 2 \theta_1=\theta_2 θ1=θ2
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)三次PH曲线的参数速率表示为:
σ ( t ) = ∑ i = 0 2 σ i B i 2 ( t ) \sigma(t)=\sum_{i=0}^2\sigma_iB_i^2(t) σ(t)=i=02σiBi2(t)
由弧长的定义 S ( t ) = ∫ 0 t σ ( τ ) d τ S(t)=\int_0^t\sigma(\tau) d\tau S(t)=0tσ(τ)dτ
S ( t ) = ∑ i = 0 3 S i B i 3 ( t ) , 0 ≤ t ≤ 1 S(t)=\sum_{i=0}^3S_iB_i^3(t),0≤t≤1 S(t)=i=03SiBi3(t),0t1
其中, S 0 = 0 , S i = 1 3 ∑ 0 i − 1 σ j , i = 1 , 2 , 3 S_0=0,S_i=\frac{1}{3} \sum_0^{i-1} \sigma_j ,i=1,2,3 S0=0,Si=310i1σj,i=1,2,3
三次PH曲线的全弧长为:
S = S ( 1 ) = 1 3 ∑ 0 2 σ i S=S(1)=\frac{1}{3} \sum_0^2 \sigma_i S=S(1)=3102σi

四次PH曲线的构造及性质

令平面四次PH曲线 P ( t ) = ∑ t = 0 4 p t B t 4 ( t ) , 0 ≤ t ≤ 1 P(t)=\sum_{t=0}^4p_tB_t^4(t), 0≤t≤1 P(t)=t=04ptBt4(t),0t1为了使P(t)为PH曲线,则作如下假设:
在这里插入图片描述
其中,
在这里插入图片描述

代入公式计算有,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
四次PH曲线的性质:
在这里插入图片描述

五次PH曲线的构造及性质

五次PH曲线有两种:非尖点五次PH曲线和尖点五次PH曲线。

非尖点五次PH曲线

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

尖点五次PH曲线

在这里插入图片描述

参考文献

以上内容主要参考以下文献。
[1]: 知乎:贝塞尔曲线的求导https://zhuanlan.zhihu.com/p/130247362
[2]: Pythagorean hodographs
[3]: 一类五次PH曲线Hermite插值的几何方法
[4]: PH曲线的研究及其应用
[5]: PH曲线的构造及相关问题研究
[6]:基于PH曲线的Delta机器人轨迹规划方法
[7]: 基于PH曲线的无人机路径规划算法

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

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

相关文章

Docker Swarm总结+CI/CD Devops、gitlab、sonarqube以及harbor的安装集成配置(3/4)

博主介绍:Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 🍅文末获取源码下载地址🍅 👇🏻 精彩专栏推荐订阅👇🏻…

makefile编写练习

makefile编写练习 OVERVIEW makefile编写练习文件结构直接编译整个项目并运行将项目制作成为静态库将项目制作成为动态库 编写makefile文件来编译带头文件的程序, 文件结构 初始项目文件结构,如下所示: #ifndef ADD_HPP #define ADD_HPPint…

栈详解(C语言)

文章目录 写在前面1 栈的定义2 栈的初始化3 数据入栈4 数据出栈5 获取栈顶元素6 获取栈元素个数7 判断栈是否为空8 栈的销毁 写在前面 本片文章详细介绍了另外两种存储逻辑关系为 “一对一” 的数据结构——栈和队列中的栈,并使用C语言实现了数组栈。 栈C语言实现源…

Visual Studio 使用MFC 单文档工程绘制单一颜色直线和绘制渐变颜色的直线(实例分析)

Visual Studio 使用MFC 单文档工程从创建到实现绘制单一颜色直线和绘制渐变颜色的直线 本文主要从零开始创建一个MFC单文档工程然后逐步实现添加按键(事件响应函数),最后实现单一颜色直线的绘制与渐变色直线的绘制o( ̄▽&#xffe…

2、Burp使用

文章目录 一、为Firefox浏览器安装数字证书二、利用Intruder模块进行暴力破解 一、为Firefox浏览器安装数字证书 &#xff08;1&#xff09;利用Firefox浏览器访问http://burp或127.0.0.1:<监听端口>&#xff0c;点击页面右上侧的“CA Certificate”处下载CA证书&#xf…

靡靡之音 天籁之声 ——Adobe Audition

上一期讲到了和Pr配合使用的字幕插件Arctime Pro的相关介绍。相信还记得的小伙伴应该记得我还提到过一个软件叫做Au。 当人们对字幕需求的逐渐满足&#xff0c;我们便开始追求更高层次的享受&#xff0c;当视觉享受在进步&#xff0c;听觉享受想必也不能被落下&#xff01; Au即…

【模板】KMP算法笔记

练习链接&#xff1a;【模板】KMP - 洛谷 题目&#xff1a; 输入 ABABABC ABA 输出 1 3 0 0 1 思路&#xff1a; 根据题意&#xff0c;用到的是KMP算法&#xff0c;KMP算法思想是通过一个一个匹配首字母的原理进行整个匹配效果&#xff0c;当某个首字母不匹配的时候&#x…

【全栈开发】Blitz.js与RedwoodJS

技术的不断发展是必然的。如果你仔细观察这片土地&#xff0c;你会注意到随着技术的成熟而出现的某些模式。特别是&#xff0c;开发人员一直在努力提高性能&#xff0c;简化开发过程&#xff0c;增强开发人员体验。 在本指南中&#xff0c;我们将分析两个帮助全栈应用程序世界…

2023年3月电子学会青少年软件编程 Python编程等级考试一级真题解析(判断题)

2023年3月Python编程等级考试一级真题解析 判断题(共10题,每题2分,共20分) 26、在Python编程中,print的功能是将print()小括号的内容输出到控制台,比如:在Python Shell中输入print(北京,你好)指令,小括号内容可以输出到控制台 答案:错 考点分析:考查python中print…

Proteus仿真--基于PG12864LCD设计的指针式电子钟

本文介绍基于PG12864LCD设计的指针式电子钟&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真图如下 本设计中时间芯片选用DS1302芯片&#xff0c;液晶选用PG12864LCD模块&#xff0c;按键K1-K3&#xff0c;K1用于时分选择&#xff0c;K2用于调整功能&#xff0c…

积跬步至千里 || 为循环添加进度条

有时候&#xff0c;我们的Python程序需要运行较长时间&#xff0c;原因是一些环节占用时间太长&#xff08;如for循环&#xff09;。如果我们要观察那些占用时间任务的执行进度&#xff0c;那么有一个进度条能实时的显示任务进度情况的话&#xff0c;将会非常方便。而tqdm库就是…

Docker容器化部署若依微服务ruoyi-cloud项目

系统环境 接下来的内容以 Ubuntu 22.04.1 操作系统为例。 下载安装Docker Ubuntu hihi-IdeaCentre-GeekPro-15ICK:~$ sudo su [sudo] hi 的密码&#xff1a; roothi-IdeaCentre-GeekPro-15ICK:/home/hi# docker ps 找不到命令 “docker”&#xff0c;但可以通过以下软件包安…

JDK、JRE、JVM的特点和关联

Java 的三个重要的概念是 JDK&#xff08;Java Development Kit&#xff09;、JRE&#xff08;Java Runtime Environment&#xff09;和 JVM&#xff08;Java Virtual Machine&#xff09;。它们之间有着密切的关联&#xff0c;同时又有不同的职责和特点。 JDK&#xff08;Java…

使用skforecast进行时间序列预测

时间序列预测是数据科学和商业分析中基于历史数据预测未来价值的一项重要技术。它有着广泛的应用&#xff0c;从需求规划、销售预测到计量经济分析。由于Python的多功能性和专业库的可用性&#xff0c;它已经成为一种流行的预测编程语言。其中一个为时间序列预测任务量身定制的…

【数据库】执行计划中二元操作对一趟扫描算法的应用,理解代价评估的应用和优化,除了磁盘代价还有CPU计算代价不容忽略

二元操作的一趟算法 ​专栏内容&#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发&#xff0c;开发的步骤&#xff0c;以及开发过程中的涉及的原理&#xff0c;遇到的问题等&#xff0c;让大家能跟上并且可以一起开发&#xff0c;让每个需要的人成为参与者。 本专栏会定…

makefile项目构建

makefile项目构建 OVERVIEW makefile项目构建1.概念2.make选项3.makefile语法&#xff08;1&#xff09;基本语法&#xff08;2&#xff09;系统与自定变量&#xff08;3&#xff09;常用函数&#xff08;4&#xff09;模式匹配与伪目标 4.makefile编译流程&#xff08;1&#…

机器学习---贝叶斯网络与朴素贝叶斯

1. 贝叶斯法则 如何判定一个人是好人还是坏人&#xff1f; 当你无法准确的熟悉一个事物的本质时&#xff0c;你可以依靠与事物特定本质相关的事件出现的次数来判断 其本质属性的概率。如果你看到一个人总是做一些好事&#xff0c;那这个人就越可能是一个好人。 数学语言表达…

C# APS.NET CORE 6.0 WEB API IIS部署

1.创建 APS.NET CORE6.0 WEB API项目 默认选项即可 源代码&#xff1a; 项目文件展开&#xff1a; launchSettings.json {"$schema": "https://json.schemastore.org/launchsettings.json","iisSettings": {"windowsAuthentication"…

记录华为云服务器(Linux 可视化 宝塔面板)-- Nginx篇

文章目录 配置Nginx服务器1、添加CentOS 7系统的Nginx yum资源库2、安装Nignx服务 设置Nginx安全级别&#xff08;感觉可以先不设置&#xff09;步骤一步骤二如有启发&#xff0c;可点赞收藏哟~ 配置Nginx服务器 1、添加CentOS 7系统的Nginx yum资源库 先安装rpm apt instal…

Linux 中的 ls 命令使用教程

目录 前言 如何运用 ls 命令 1、列出带有所有权的文件和目录 2、获取以人类可读的方式显示的信息 3、列出隐藏文件 4、递归列出文件 5、在使用 ls 时对文件和目录做区分 6、列出指定扩展名的文件 7、基于大小对输出内容排序 8、根据日期和时间排序文件 让我们来总结…