作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
(对this question的跟进。)
给定一系列三次贝塞尔曲线,如何最小化它们以使其以C2连续的方式连接?
输入:
带有控制点P0
,P1
,P2
,P3
的
Q0
,Q1
,Q2
,Q3
P3 = Q0
P2 - P3 = Q0 - Q1
P1 - 2*P2 + P3 = Q0 - 2*Q1 + Q2
最佳答案
使修改后的曲线尽可能接近原始曲线可能有多种解释,但可以考虑使端点和切线远离连接点的常数保持不变。因此,点P0
,P1
,P3 = Q0
,Q2
和Q3
是恒定的。
我们可以更改原点,以便可以将强制C2连续性的P3 = Q0 = 0
表示为:
P1 - 2*P2 = 2*Q1 + Q2
P2=a*e^i*r
和
Q1=b*e^i*r
(保持相同的角度可以增强C2的连续性。
(P1 - Q2)/2 = c*e^i*s
r=s
,并找到
a
和
b
的组合,例如
a+b =c
。有无数种解决方案,但是可以使用启发式方法,例如,如果
a
最小,则更改它(从而产生不那么明智的更改)。
P1
和
Q2
以使
s
更接近
r
,然后应用上述步骤。
关于math - 平滑地连接两个贝塞尔曲线(C2连续),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12295773/
我是一名优秀的程序员,十分优秀!