2016-01-26 4 views
0

J'essaie de trouver les coins nets d'une courbe NURBS. Pour ce problème, je définis une courbure limite. J'essaie de trouver les sections sur la courbe qui a une courbure plus élevée que cette valeur. Une option consiste à interpoler sur la courbe et calculer la courbure pour toutes les valeurs, mais cela peut prendre du temps et certains points aigus sont susceptibles d'être manqués. Des idées sur la façon de trouver ces sections d'une manière efficace?Recherche de sections d'une courbe NURBS dont la courbure est supérieure à une valeur prédéfinie

Répondre

1

Calculer la dérivée de la courbure analytiquement, je suppose que vous trouverez une expression (terrible) avec un polynôme au numérateur. Un bon solveur polynomial vous permettra de trouver les racines, donc les extrema, pour diviser la courbe en sections avec une courbure monotone, et de là trouver les solutions précises de k=c par regula falsi ou similaire. Une approche beaucoup plus simple est d'aplatir la courbe (convertir en une polyligne lisse) et d'estimer la courbure locale sur tous les triplets de points consécutifs (en utilisant leur cercle circonscrit). Les sections à courbure élevée seront probablement également détectables par des anomalies de la densité ponctuelle lors de l'aplatissement. L'avantage de l'aplatissement par rapport à l'échantillonnage uniforme est qu'il règle automatiquement la densité de points.

Une autre idée consiste à recourir à une méthode d'approximation de courbes par arcs de cercle (cela peut être comparé à une opération d'aplatissement de second ordre). Vous trouverez quelques articles sur le sujet (ne confondez pas avec l'approximation de cercle par des courbes), mais habituellement ces méthodes sont complexes.

Peut-être qu'il est également possible de concevoir une formule analytique pour une borne inférieure sur la courbure de NURBS dans un intervalle donné et l'utiliser pour mettre en œuvre une approche de bissection.