Trouver le centre de courbure d'un point sur une b-spline 3D à l'aide de nurbs/geomdl en python
Encore une fois, je suis au-dessus de ma tête, alors s'il vous plaît, soyez indulgent avec moi.
J'ai une B-spline (importée de Solidworks) que je peux analyser avec geomdl en python.
À partir de geomdl, je peux extraire les dérivées première et seconde ainsi que les vecteurs tangents, normaux et binormaux pour un point donné de la spline.
À partir de là, je peux calculer la courbure à ce point à partir des dérivées première et seconde.
Cependant, je ne suis pas en mesure de déterminer dans quel sens la courbe tourne.
Je voudrais trouver le point qui se trouve au centre de la courbure du point d'intérêt actuel sur la bspline.
Je "pense" que le vecteur tangent et le vecteur normal se trouvent tous deux sur le plan osculateur d'intérêt. Le produit croisé me donnerait alors la normale au plan osculateur. Cependant, je ne peux pas faire ce travail.
Au minimum, j'ai besoin de savoir dans quel sens la courbe se plie. c'est-à-dire CW ou CCW.
Mais si j'avais le point au centre de la courbure, je saurais à peu près tout sur ce point.
Est-ce correct?
Pour reformuler la question:
Étant donné un point, les dérivées de la courbe à ce point et les vecteurs Tangent, Normal et BiNormal, comment puis-je trouver le centre de courbure ?
Solution du problème
Étant donné une courbe paramétrique C(t) et les dérivées première et seconde C'(t) et C"(t), le vecteur de courbure peut être trouvé
K(t) = m1*C"(t) - m2*C'(t)
où
m1 = 1.0/||C'(t)||^2 and m2 = m1*m1 * C'(t) \dot C"(t).
A partir de K(t), vous pouvez trouver le rayon de courbure R(t) comme
R(t) = K(t)/||K(t)||^2
et alors le centre de courbure est C(t)+R(t).
Commentaires
Enregistrer un commentaire