I am looking for a way to re-parametrize the cubic Bezier curve in t domain to cubic bezier curve in S (arclength) domain. Thanks
Asked
Active
Viewed 504 times
2
-
@bubba, I also attempted this, but concluded it isn't possible. My application is to display SVGs on a laser scanner like you see at night clubs & laser shows. It has 2 rotating mirrors that steer the laser beam along the X & Y axis, so you need to feed it x,y coordinates moving at constant speed. Since cubic Bezier curves don't move at constant speed w.r.t. t, so parametizing it by arc length is 1 way. But a symbolic solution isn't necessary. All you have to do is to calculate ArcLength'[t] = Sqrt[x'[t]^2 + y'[t]^2] at each step and increment dt by the amount needed for constant speed. – Yale Zhang Dec 01 '16 at 00:01
-
I tried to find the cumulative arc length as a function of t in Mathematica, but it gave up after a few minutes of trying to evaluate the integral. – Yale Zhang Dec 01 '16 at 00:05
-
If you just need a rough result, you can approximate the Bezier curve by a polyline. Arclength parameterization of a polyline is easy. Actually, you can make the result as good as you want by adjusting the accuracy of the polyline approximation. – bubba Dec 01 '16 at 13:31
1 Answers
1
This is impossible (using rational functions, anyway). The only Bezier curves that can be parameterized by arclength are linear ones (of degree one). See ...
R.T. Farouki, T. Sakkalis
Real rational curves are not unit speed
Computer Aided Geometric Design, 8 (1991), pp. 151–157
If you explain why you want to do this, perhaps there is some alternative solution to your problem.
bubba
- 43,483
- 3
- 61
- 122