Sign in to follow this  
data2

Signed curvature of a bezier curve (or polyline)

Recommended Posts

Hi, I'd like to get the signed curvature of a bezier curve. I've already implemented a curve whose coordinate and first two derivates can be evaluated (with parameter t [0,1]). Furthermore I found the equation for the curvature Length(d1 x d2) / Length(d1)^3 where d1 is the first derivate and d2 the second derivate respectively. I tested my implementation and it seems to work as expected (higher values where the curve has a small radius and smaller values where the radius is big). But how can I determine whether the curve is convex or concave, which I actually need to know? I also have the normal vectors of the control points. To give you some information about what I'm trying to do (there might be a simpler/faster solution that bezier): I've a 3D polyline and need to detect the points of highest convex curvature (where the polyline has peaks). Currently, I'm trying to approximate the line with bezier segments where the polyline's points are the control points of the curve (i.e. points i-2,..,i,..,i+2 of the polyline to form a 4 degree bezier with 5 control points). In point i I wanted to evaluate the curvature. Well, I hope that someone was willing to read all that -- thank you! And hopefully there is someone who can help me -- thank you even more :-)! Greetings, Felix

Share this post


Link to post
Share on other sites
Whether the curvature at a point is concave or convex depends on your point-of-view. That is, you have to know which side of the curve is the inside. Think of it this way. if you are looking at a bit of the Earth from the outside---all you can see if just a portion of the spherical arc---the you will see it to be convex. But, if you look at that same bit of the Earth from the inside, you will see it to be concave. So, this is one little thing that you must consider. All points are both concave and convex until you decide which side you are on.

Your problem then can be solved trivially if you determine the location of center of curvature instead of just the radius of curvature. If you are on the same side as the center-of-curvature, the curve is concave at that point. If you are on the opposite side as the center-of-curvature, the curve is convex at that point.

If this is a 3D curve, I would assume you'd compute center-of-curvature by projecting onto a plane of the Frenet frame, and also that you have some heuristic to determine where the outside/inside of the curve is with respect to the chosen plane.

Share this post


Link to post
Share on other sites
Hi.

Thanks for the reply. Well, I can provide a rough estimate about the direction of 'outside'. In my case, it would be the normal of the central control point. I googled how to calculate the frenet frame. it this right:

tangent = normalize(d1)
biNormal = normalize(d1 x d2)
normal = biNormal x tangent

where again d1 and d2 are the first and second derivates.

The 'plane' you'd project onto, is it the plane spanned by tangent and normal, i.e. whose normal is the curve's biNormal??

Uh... and what about the curvature then? When projecting the curve onto a plane, I suspect the curvature to get distorted (as does the curve). How do I transform the curvature back? Or can I use the unsigned curvature (as computed above) and take the negative value if the projected curvature is negative??

Share this post


Link to post
Share on other sites
And will it be appropriate to only project the derivates (d1 and d2) to calc the curvature on the plane or do I need to project the control points and then re-calculate the curvature for the projected curve?

And -- I'm sorry -- how do I get the center of the cicle of curvature?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this