24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1051  |  回复: 3

r123ed

金虫 (著名写手)

[求助] 通过Catmull Rom插值算法求得曲线各点,怎么让这些点等距离分布?已有1人参与

比如我已知四个点(p0x,p0y),(p1x,p1y)(p2x,p2y)(p3x,p3y)我可以让 t 从0 变到1, 通过以下Catmull Rom方程计算出(p1x,p1y)(p2x,p2y)的样条曲线。

x = 0.5 * ((2 * p1x) + (p2x - p0x)*t + (2*p0x - 5*p1x + 4*p2x - p3x)*t*t + (3*p1x + p3x - p0x - 3*p2x)*t*t*t)

y = 0.5 * ((2 * p1y) + (p2y - p0y)*t + (2*p0y - 5*p1y + 4*p2y - p3y)*t*t + (3*p1y + p3y - p0y - 3*p2y)*t*t*t)

我的问题来了,当我让t 等步长变大的时候, 这些(x0,y0),(x1,y1)...并不是等距离的,我想得到等距离的(x0,y0),(x1,y1)..该如何计算呢?同时我想知道,t怎么变化的时候,(x0,y0),(x1,y1)..这些点是等距离的。

不要用微积分什么的求距离啊,我要编程实现的,谢谢!
回复此楼
shape memory
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wurongjun

专家顾问 (职业作家)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
r123ed: 金币+2, ★★★很有帮助 2016-11-29 05:21:09
你这个问题,实际上就是弧长参数化问题!
一般情况下没有公式解!
善恶到头终有报,人间正道是沧桑.
2楼2016-11-28 22:05:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

r123ed

金虫 (著名写手)

引用回帖:
2楼: Originally posted by wurongjun at 2016-11-28 22:05:26
你这个问题,实际上就是弧长参数化问题!
一般情况下没有公式解!

数值解即可,不要解析解,近似的都行,简单易于编程实现就好

[ 发自手机版 http://muchong.com/3g ]
shape memory
3楼2016-11-29 05:20:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wurongjun

专家顾问 (职业作家)

引用回帖:
3楼: Originally posted by r123ed at 2016-11-29 05:20:29
数值解即可,不要解析解,近似的都行,简单易于编程实现就好
...

你可以考虑,把那个样条转化成Bézier曲线,再取均匀参数试一下!
善恶到头终有报,人间正道是沧桑.
4楼2016-11-29 21:38:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 r123ed 的主题更新
信息提示
请填处理意见