29 votes

Comment trouver les points de coin de courbe en utilisant JTS ou NTS ?

J'ai une courbe (disons un bord JTS) :

entrer la description de l'image ici

Comment trouver tous les points de changement de direction de la courbe qui dépassent l'angle donné en utilisant JTS (Java) ou NTS (C#) :

entrer la description de l'image ici

0 votes

Comme quelques indications dans la bonne direction... pour chaque polygone, vous pouvez prendre l'anneau extérieur et commencer à itérer en calculant les angles au fur et à mesure.

2 votes

En ce qui concerne le calcul des angles à chaque point ceci pourrait aider. Vous ne précisez pas si vous vous souciez des angles internes ou externes, je vous laisse donc le soin de le découvrir...

0 votes

La question n'est pas claire. Elle pourrait utiliser un peu de contexte cependant. Quel est l'objectif principal?

1voto

J'ai fait des recherches et effectué des tests sur JTS, et la meilleure méthode que j'ai trouvée est la suivante :

  • Créez des polygones et utilisez la fonction union
  • Ensuite, itérez sur les coordonnées et créez un sous-tableau à chaque "angle droit" (produit scalaire négatif) et lorsque la somme des angles atteint 180 (ne prenez pas le dernier angle pour éviter les problèmes de non-fonctionnement)
  • Je change ensuite la base en une base orthonormale avec x(firstElemOfSubArray, lastElemOfSubArray) en calculant la matrice de changement de base, puis je recalcule le sous-tableau dans un nouveau système de coordonnées
  • J'ai ensuite créé une fonction en utilisant org.apache.commons.math3.analysis.interpolation.SplineInterpolator pour interpoler la fonction du parcours, puis j'ai obtenu la dérivée et cherché les extrema (ne prenez pas les éléments avec une ordonnée trop basse). Avec son abscisse, vous pouvez trouver quel point est un point d'inflexion
  • Donc, les points que vous recherchez sont les premiers éléments de chaque sous-tableau, ainsi que ses points d'inflexion (s'il y en a)

0 votes

C'est tout un projet que je dois terminer, puis le pousser quelque part.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X