Salut !
Je voudrais afficher à l’écran une courbe spline ayant trois points de contrôle : un situé à sa première extrémité, un autre vers le milieu, et le dernier à son autre extrémité. Pour ce faire, j’ai recours à cette définition :
$\forall t \in [0 ; 1], C(t) = \sum\limits_{i=1}^{k}F_i(t)P_i$
Avec :
-
"t" l’abscisse du point à construire
-
"C" la fonction définissant soit l’abscisse, soit l’ordonnée du point à construire en fonction de "t"
-
"k" le nombre de points de contrôle
-
"F_i" une fonction de déformation de la courbe
-
"P_i" soit l’abscisse, soit l’ordonnée du point de contrôle de la courbe
Autrement dit, chaque point de la courbe a pour abscisse : la somme des produits "image d’une fonction de déformation en ’t’ multipliée par l’abscisse du point de contrôle". Même raisonnement pour l’ordonnée de chaque point de la courbe.
Question
J’ai lu ça dans mon cours et j’ai voulu tester avec :
-
$t \in [0 ; 19]
-
$k = 3$
-
$F_i = 2 || 1 || 0.5$
-
$P_i$ étant soit au début de la courbe, soit à peu près à son milieu en abscisse mais très haut en ordonnée, soit à son autre extrémité.
Voici le résultat graphique et le problème qui semble apparaître :
Comment se fait-il que le point de contrôle du milieu ne force pas la courbe à monter du point de contrôle du début jusqu’au milieu, puis à descendre du point de contrôle du milieu jusqu’à la fin ?
Le code (HTML, JS, CSS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <html style="background : black;"> </html> <script> var pc_0_x = 0, pc_0_y = 0; var pc_1_x = 19, pc_1_y = 19; var pc_2_x = 9, pc_2_y = 0; var new_p_x = 0, new_p_y = 0 for(i = 0; i < 20; i++) { new_p_x = 2*i*pc_0_x + 1*i*pc_2_x + 0.5*i*pc_1_x; new_p_y = 2*i*pc_0_y + 1*i*pc_2_y + 0.5*i*pc_1_y; document.body.innerHTML += "<div style = 'display : inline-block; background : white; padding : 1px; position : absolute; left : " + new_p_x + "; top : " + new_p_y + ";'></div>"; i } </script> |
Merci d’avance !