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

平面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.mzph.cn/news/170821.shtml

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

相关文章

Docker exec命令

docker exec :在运行的容器中执行命令。 语法: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]OPTIONS说明: -d:分离模式: 在后台运行 -i:即使没有附加也保持STDIN打开 -t:分配一个伪终…

韵达快递查询,韵达快递单号查询,一键筛选出单号中的退回件

批量查询韵达快递单号的物流信息,并将其中的退回件一键筛选出来。 所需工具: 一个【快递批量查询高手】软件 韵达快递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,第一次使用的朋友记得先注册&#xff…

鸿蒙(HarmonyOS)应用开发——装饰器

简介 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,扩展了声明式UI、状态管理等相应的能力,让开发者可以以更简洁、更自然的方式开发高性能应用。TS是JavaScript(简称JS)的超…

MySQL 库操作 | 表操作

文章目录 一.MySQL库的操作1.创建数据库2.字符集和校验规则3.操纵数据库 二.MySQL表的操作1.创建表2.操作表3.删除表 一.MySQL库的操作 1.创建数据库 创建数据库 创建数据库的SQL如下: CREATE DATABASE [IF NOT EXISTS] db_name [[DEFAULT] CHARSETcharset_name…

Redis——使用lua脚本模糊删除数据

前言 本文适用于Redis集群,是否适用单机模式未做测试! 一、创建lua脚本: 命名为clear_data.lua redis.call("select",0)--游标的id local cursor 0 --查找删除的key的数量 local keyNum 0 repeat--使用scan搜索,c…

小程序和Vue写法的区别主要有什么不同

1.语法不同:小程序使用的是WXML、WXSS和JS,而Vue使用的是HTML、CSS和JSX。 2.数据绑定方式不同:小程序使用的是双向数据绑定,而Vue使用的是单向数据流。 1)在小程序中需要使用e.currentTarget.dataset.*的方式获取&…

一篇文章完成Hbase入门

文章目录 一、简介1、数据模型结构2、物理存储结构3、数据模型4、基本架构 二、安装1、下载解压安装包2、修改配置文件3、启动服务(单机、集群)4、配置高可用(HA) 三、命令行操作1、建表2、新增/更新数据3、查看表数据4、删除数据5、修改默认保存的数据版本 四、架构1、RegionS…

C语言——猜凶手

题目: 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。…

数据提取PDF SDK的对比推荐

PDF 已迅速成为跨各种平台共享和分发文档的首选格式,它作为一种数据来源,常见于公司的各种报告和报表中。为了能更好地分析、处理这些数据信息,我们需要检测和提取 PDF 中的数据,并将其转换为可用且有意义的格式。而数据提取的 PD…

面试问题--智能指针

什么是智能指针? 当你在编写程序时,可能需要在运行时动态分配内存来存储数据。在传统的C中,你可能会使用 new 和 delete 操作符来手动管理内存。但是这样容易出现一些问题,比如忘记释放内存导致内存泄漏,或者释放了之…

物联网中基于信任的安全性调查研究:挑战与问题

A survey study on trust-based security in Internet of Things: Challenges and issues 文章目录 a b s t r a c t1. Introduction2. Related work3. IoT security from the one-stop dimension3.1. Output data related security3.1.1. Confidentiality3.1.2. Authenticity …

JavaScript中Object.prototype.toString.call()、instanceOf和Array.isArray()的区别

JavaScript是一种非常流行的编程语言,它具有许多强大的功能和特性。在JavaScript中,有一些方法和操作符可以帮助我们更好地处理数据类型和对象。本文将重点讨论Object.prototype.toString.call()、instanceOf和Array.isArray()这三个在JavaScript中常用的…

快速认识Linux的几个指令

我们先简单认识几个指令,为之后的指令学习打好基础 打开XShell并登录云服务器 01.pwd指令 pwd命令的作用是显示当前在Linux系统中所处的路径 02.ls指令 ls命令的作业是罗列出当前路径下的文件名(即pwd的路径下),由于我们没有新…

Docker Swarm总结+Jenkins安装配置与集成(4/4)

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

UniApp Button讲解

UniApp是一种基于Vue.js的跨平台开发框架,可用于快速构建移动应用程序。在UniApp中,按钮(Button)是常用的交互元素之一,用于触发用户操作。本文将详细介绍UniApp中按钮的使用方法和相关特性。 创建按钮 在UniApp中&am…

我是如何写作的?

以前是如何写作的 从小学三年级开始学写作文,看的作文书,老师布置作文题目,内容我都是自己写的。那时会积累一些好词,听到什么好词就记住了。并没有去观察什么,也没有好好花心思在写作上。总觉得我写的作文与真正好的…

kvm使用vbox已经安装好的windows10系统

我工作的电脑安装的系统是ubuntu,但是公司办公相关软件大多是windows版本,所以我用vbox虚拟了一个windows10系统。但是有一天发现开发android应用时想用模拟器调试用不了,发现是模拟器使用kvm,但是这时kvm启动不起来,原因是被vbox占用了。 最…

Python可迭代对象排序:深入排序算法与定制排序

更多Python学习内容:ipengtao.com 排序在计算机科学中是一项基础而关键的操作,而Python提供了强大的排序工具来满足不同场景下的排序需求。本文将深入探讨Python中对可迭代对象进行排序的方法,涵盖基础排序算法、sorted函数的应用、以及定制排…

gitbook制作电子书

1 引言 GitBook 是一个开源的文档编辑和托管平台,用于创建和维护文档、手册和电子书。它基于 Markdown 和 Git 技术,帮助用户方便地编写、编辑和发布文档。 GitBook 支持将文档输出为多种格式,包括网页、PDF、ePub 等,适用于不同…

【C++初阶】STL详解(八)List的模拟实现

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…