【发布时间】:2016-02-08 16:59:03
【问题描述】:
我需要离散化一条三阶贝塞尔曲线,点沿曲线均匀分布。曲线由四个点 p0、p1、p2、p3 定义,0
point_t = (1 - t) * (1 - t) * (1 - t) * p0 + 3 * (1 - t) * (1 - t) * t * p1 + 3 * (1 - t) * t * t * p2 + t * t * t * p3;
我的第一个想法是离散化 t = 0, t_1, ... t_n, ..., 1
这不起作用,因为一般来说,我们最终不会得到离散点之间的统一距离。
总而言之,我需要的是一种离散化参数曲线的算法,以便:
|| p(t_n) - p(t_n_+_1) || = d
我曾考虑使用Casteljau algorithm 将贝塞尔曲线递归地减半,直至达到所需的分辨率,但这需要大量的距离计算。
关于如何分析解决这个问题的任何想法?
【问题讨论】:
-
您正在寻找的也称为“弧长参数化”。通常,如果您以“默认参数化”的固定间隔细分贝塞尔曲线,则生成的曲线段将不会具有相同的弧长。这是一种方法pomax.github.io/bezierinfo/#tracing。
-
非常感谢@hkrish!采样距离(t)和插值是解决问题的一种非常优雅的方法。我正在测试它。随意添加这个作为答案,以便我可以接受它
-
你的意思是恒定的直线(弦)距离还是曲线距离?
-
#Yves 我的意思是曲线距离
标签: path computational-geometry spline bezier