- #1
Reedbeta
- 3
- 0
(Note: cross posted to http://www.devmaster.net/forums/showthread.php?t=16227 )
Hey everyone,
As we know, the arc length of a cubic Bezier spline is kinda hard to calculate. There's no closed-form mathematical expression, so most people just subdivide it into a bunch of line segments and add those up. This is slow, but you can dress it up with adaptive subdivision and things like that to make it a bit faster.
I'd like to approximate the parameter-to-arc-length mapping of a Bezier with another Bezier. That is, given some 3D Bezier B(t) I'd like to compute a 1D Bezier s(t) that gives approximately the arc length of B from B(0) to B(t).
I could use the line segment method to get a bunch of "data points" on the arc length of B and then fit the 1D Bezier to it with least-squares or something. But I'm hoping (perhaps vainly) for a faster way...ideally something to compute the control points of s directly from the control points of B. I've googled around a bit but not found anything addressing this specific issue...anyone here happen to have heard of something like this before? :)
Hey everyone,
As we know, the arc length of a cubic Bezier spline is kinda hard to calculate. There's no closed-form mathematical expression, so most people just subdivide it into a bunch of line segments and add those up. This is slow, but you can dress it up with adaptive subdivision and things like that to make it a bit faster.
I'd like to approximate the parameter-to-arc-length mapping of a Bezier with another Bezier. That is, given some 3D Bezier B(t) I'd like to compute a 1D Bezier s(t) that gives approximately the arc length of B from B(0) to B(t).
I could use the line segment method to get a bunch of "data points" on the arc length of B and then fit the 1D Bezier to it with least-squares or something. But I'm hoping (perhaps vainly) for a faster way...ideally something to compute the control points of s directly from the control points of B. I've googled around a bit but not found anything addressing this specific issue...anyone here happen to have heard of something like this before? :)
Last edited by a moderator: