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)

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

Posts les plus consultés de ce blog

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"