Suite

Implémentation gratuite de l'approximation polynomiale avec l'algorithme du noyau exponentiel (PAEK)

Implémentation gratuite de l'approximation polynomiale avec l'algorithme du noyau exponentiel (PAEK)


J'ai besoin d'une implémentation libre (c'est-à-dire Open Source) de l'algorithme d'approximation polynomiale avec noyau exponentiel (PAEK), de préférence en C, C++, Python, Julia ou R.

L'algorithme est l'une des méthodes proposées par ArcGIS pour le lissage des lignes et décrit dans Bodansky, Eugene ; Gribov, Alexandre ; et Pilouk, Morakot, "Lissage et compression de lignes obtenues par conversion de trame en vecteur", LNCS 2390, Springer, p. 256-265, 2002.

Si je ne trouve pas d'implémentation prête à l'emploi, je m'y essaierai moi-même.


Je suis tombé sur un fil Lissant une figure 2D. Les réponses font référence à cet article sur l'algorithme de Chaikin pour les courbes

Pour un polygone donné avec des sommets comme P0, P1,… P(N-1), l'algorithme de coupe de coin générera 2 nouveaux sommets pour chaque segment de ligne défini par P(i) et P(i+1) comme

Q(i) = (3/4)P(i) + (1/4)P(i+1) R(i) = (1/4)P(i) + (3/4)P(i+ 1)

Ainsi, votre nouveau polygone aura 2N sommets. Vous pouvez ensuite appliquer à nouveau et à plusieurs reprises la coupe d'angle sur le nouveau polygone jusqu'à ce que la résolution souhaitée soit atteinte. Le résultat sera un polygone avec de nombreux sommets mais ils seront lisses lorsqu'ils seront affichés. Il peut être prouvé que la courbe résultante produite à partir de cette approche de coupe de coin convergera vers une courbe B-spline quadratique. L'avantage de cette approche est que la courbe résultante ne dépassera jamais.

Polygone d'origine

Appliquer la coupe d'angle une fois

Appliquer la coupe d'angle une fois de plus

La source

En outre, un autre exemple, vous pouvez voir Corner Cutting the Cube, qui est une variante de l'algorithme de coupe d'angle de Chaikin.

Il est similaire dans l'esprit à un certain nombre de schémas de subdivision pour produire des surfaces lisses à partir d'un ensemble original de sommets de contrôle, y compris l'algorithme Doo-Sabin et l'algorithme Catmull-Clark (?), qui choisissent des distances et des poids afin de produire B- les surfaces de spline et le schéma de boucle, qui est le grand-père de la plupart des travaux actuels sur les surfaces de subdivision dans les graphiques.

C'est une variante intéressante car elle est singulière dans un certain sens : normalement, les algorithmes de coupe d'angle coupent une petite section « w » à chaque extrémité de chaque bord dans le modèle d'origine (w = 1/4 dans l'algorithme de chaikin d'origine), laissant une partie du bord d'origine. Cette variante entraîne la disparition du bord d'origine.

Pour mettre en œuvre l'une ou l'autre option, vous voudrez peut-être examiner le TP4 : Courbes de subdivision

explique comment implémenter trois schémas de subdivision pour les courbes fermées : Chaikin, coupe d'angle et quatre points.Courbes de subdivision


Voir la vidéo: Erreur dinterpolationChapitre 2: Interpolation polynomiale