Aide concernant la page "spline_B_curve.html
L'objectif de cette page Web est de comparer les courbes générées par des B-splines
avec celle générées par des Math-splines et de montrer comment passer d'une représentation à l'autre.
Il y a quelques dizaines d’années,
j’ai appris ce que sont les fonctions splines de degrés 3 et j’ai écrit des programmes
qui les utilisent pour faire passer une courbe par des points données dans un plan.
J’attends depuis longtemps que de telles courbes soient implémentées dans des logiciels tels
qu’Inkscape
et FreeCAD.
J’ai vu fin décembre 2022 sur Youtube l’excellente vidéo de Freya Holmér qui se nomme :
"The continuity of Splines" de Freya Holmér.
C.f. : https://www.youtube.com/watch?v=jvPPXbo87ds
Malheureusement, la courbe que je nommerais "Math-spline",
basées sur les fonctions splines et que j’ai implémenté dans cette page WEb et dans la page : https://www.juggling.ch/gisin/bgweb/aprod2000_perso/spline_math_curve.html
n’est pas décrite par Freya Homér ni utilisée dans les logiciels que je connais.
Les B-splines et les Math-splines partagent plusieurs caractéristiques.
Elles diffèrent principalement sur deux caractéristiques.
Voici les caractéristiques communes :
° continu
° de tangente variant de manière continue le long de la courbe, elle est G1
° de rayon de courbure variant de manière continue le long de la courbe, elle est G2
° peut facilement être fermée
° est invariante par rotation, symétrie et homothétie.
° est facile à calculer, rapidement
Voici les différences.
+ Pour la B-spline, l’influence des points se fait uniquement sur les 4 segments voisins du point.
- Pour la Math-spline, l’influence des points se fait pratiquement sur les 8 segments voisins du point.
Théoriquement, l'influence se fait sur tous les segments, mais elle diminue rapidement (d'un facteur 3.73) avec la distance.
- La B-spline ne passe par aucun point de la courbe, ou dans certaines variantes uniquement par le premier et le dernier.
+ La Math-spline passe par tous les points de la courbe.
- La B-spline nécessite des points de contrôles supplémentaires.
+ La Math-spline ne nécessite aucun point autre que ceux par lesquels passe la courbe.
+ Pour la Math-spline, il est facile d'avoir des points de brisures, donc où la tangente varie de façon discontinue
° On peut passer d'un système de contrôle à l'autre par des calculs assez rapides.
Le seul point négatif d'une Math-spline est que l'influence des points sur les segments
n'est théoriquement pas local, même si pratiquement elle ne se fait que sur les 8 segments voisins du point.
J'ai commencé par faire des tests sur ces Math-splines dans
cette page Web.
Explications de quelques fonctionnalités de la page d'implémentation
Cette page ne sert à rien d'autre qu'à faire des tests.
Elle sert à comparer les courbes générées par des B-splines et celles générées par des Math-spline.
J'aimerai beaucoup que la génération de courbes par des Math-splines soient dans des logiciels tels
qu'Inkscape et
FreeCAD.
L'illustration de génération d'une courbe passant par des points donnés se fait en 2 dimensions,
dans un canvas de 800x800.
Évidemment, on peut généraliser la manière de faire à des courbes passant par des points définie dans
un espace à 3 dimensions et même dans un espace de dimensions quelconque.
-
On peut placer divers points en cliquant dans le canevas, avec la touche "Shift" pressée.
-
À chaque point d'une Math-spline correspond un point d'une B-spline et réciproquement.
De même qu'a chaque courbe Math-spline correspond une courbe B-spline.
Ces deux courbes sont généralement superposées.
-
Les points bleus sont les points de contrôle de la Math-spline. Ils se trouvent sur la courbe.
Le bleu clair est le premier, le bleu foncé est le dernier.
Ils ne font que de contrôler, il ne sont pas sur la courbe.
Ils sont introduit pour avoir une correspondance exacte avec les B-splines,
mais ne sont pas indispensable, c.f. "Natural Left" et "Natural Right".
-
Les points verts sont les points de contrôle de la B-spline.
Ils ne se trouvent pas sur la courbe.
Le vert clair est le premier, le vert foncé est le dernier.
-
En cliquant sur un point, on sélectionne le point et la courbe correspondante.
-
On peut effacer le point sélectionné avec le bouton "Delete point".
-
On peut ajouter un point avant le point sélectionner en cliquant et pressant "Ctrl+Shift".
-
uniform dT = 1 utilise une paramétrisation de la courbe donnant le même temps pour passer d'un point au suivant.
-
distance dependent of Math-spline, utilise une paramétrisation de la courbe donnant un temps pour passer d'un point au suivant
qui est égale à la distance en pixels entre les deux points extrémités du segment (Points de la Math-spline).
-
distance dependent of B-spline, utilise une paramétrisation de la courbe donnant un temps pour passer d'un point au suivant
qui est égale à la distance en pixels entre les deux points de la B-spline.
-
Automatic, utilise un des deux choix précédent, suivant le type de point de contrôle sélectionné.
-
dT = length of the segment (less good) utilise une paramétrisation de la courbe donnant un temps pour passer d'un point au suivant
qui est égale à la longueur du segment.
Cela nécessite plus de calculs et ne change presque pas par rapport à la méthode précédente.
Pratiquement, le calcul de la longueur du segment dessiné se fait à chaque fois que la courbe est dessinée.
C'est cette longueur qui est utilisée.
C'est la raison pour laquelle en partant du cas "uniforme dT = 1"
et en passant à ce cas, la courbe peut varier légèrement durant les 3 ou 4 réactualisations du dessin de la courbe.
Pressez le bouton "Rotate" pour actualiser le dessin de la courbe.
-
Closed curve, permet de fermer la courbe actuellement sélectionnée.
-
Natural Left, s''(0) = 0, rend automatique le contrôle du premier point de la Math-spline (le bleu-clair).
Cela se fait de façon interne en imposant que la courbure soit nulle en ce point.
-
Natural Right, s''(end) = 0, rend automatique le contrôle du dernier point de la Math-spline (le bleu-foncé).
Cela se fait de façon interne en imposant que la courbure soit nulle en ce point.
-
Show active spline points, permet de masquer ou montrer les points du spline actif.
-
Show ALL spline points, permet de montrer tous les points des splines.
C'est utile pour pouvoir rendre visible à nouveau des points masqués précedemment.
-
Broken point (Only for Math-spline), permet de générer une brisure au point sélectionné.
Dans ce cas, la tangente en ce point ne varie plus de manière continue.
Ces points sont, comme le premier et le dernier point, caractérisés par le fait que
la dérivée seconde des composantes X(t) et Y(t) de la courbe sont de dérivée seconde nulle.
Ne fonctionne qu'avec la Math-spline. Ce n'est pas très utile ici.
-
Sound on, permet d'activer ou de désactiver un son lors d'un clique sur un point.
-
Click to add a spline with .... Points.
Ce bouton permet de générer deux courbes, une "B-spline" et une "Math-spline" ayant le nombre de points demandé.
Pour tester que la génération de courbes splines fonctionne rapidement,
on peut générer une courbe contenant des milliers de points,
pour constater que le calcul et l'affichage se fait en une fraction de seconde.
À partir d'environ 10'000 points, le calcul est plus lent et se fait nettement sentir.
On peut également utiliser ce bouton pour générer des courbes n'ayant que quelques points,
pour comparer diverses courbes.
Pour plus d'information, en particulier sur les mathématiques et l'algorithmique, c.f.
Version française .pdf et .odt
Version traduite automatiquement en anglais .pdf et .docx
avec Google Translate.
J'ai également fait :
° des tests uniquement sur les Math-splines,
dans la page Web : spline_math_curve.html.
° des tests sur des fonctions splines,
dans la page Web : spline_function.html.
Dans cette page Web, vidéos Youtube en français sur ce sujet.
Plan du Site :
Home
bgweb.html
aprod2000_perso.html
spline_B_curve.html
spline_B_curve_help_fr.html
Page mise à jour le 21 janvier 2023 par Bernard Gisin
( Envoyer un e-mail )
Hébergement par : www.infomaniak.ch