Source: Scratch Wiki en français
Une courbe de Bézier est une courbe polynomiale. Initialement développées par Paul de Casteljau et Pierre Bézier, ces courbes ont de nombreuses applications dans des domaines variés.
Ce tutoriel propose d'implémenter des courbes de Bézier de degré 2 et 3 (le degré 1 se rapportant à une droite entre deux points).
Implémentation d'une classe Point
Il est d'abord nécessaire d'implémenter une classe Point.
À partir du tutoriel lié, récupérez les définitions de classe et les méthodes suivantes :
- « Aller à un point » ;
- « Créer un Point à partir d'un mélange de points ».
Implémentation des courbes de Bézier
Le tutoriel nécessite d'avoir créé des points au préalable avec la pseudo-classe implémentée plus tôt, afin de pouvoir essayer les blocs suivants.
Courbe quadratique
Une courbe quadratique (degré 2) est régie par 3 points de contrôle. Il faut utiliser la progression de 3 courbes de Bézier de degré 1 (des droites) pour tracer une courbe quadratique.
définir Courbe | Quadratique \[p1, p2, p3] (p1) (p2) (p3) \[précision] (p) mettre [ß / progression v] à [0] mettre [ß / étapes v] à ((arrondi de ([10^ v] de (p))) + [1]) répéter (ß / étapes) fois Points | Créer Point \[nom] [ß mix A] à partir de \[2x\[nom]] (p1) (p2) \[%] ((ß / progression) / (ß / étapes))::custom Points | Créer Point \[nom] [ß mix B] à partir de \[2x\[nom]] (p2) (p3) \[%] ((ß / progression) / (ß / étapes))::custom Points | Créer Point \[nom] [ß mix AB] à partir de \[2x\[nom]] [ß mix A] [ß mix B] \[%] ((ß / progression) / (ß / étapes))::custom Points | Aller à \[nom] [ß mix AB]::custom stylo en position d'écriture ajouter [1] à [ß / progression v] fin relever le stylo
Courbe cubique
Une courbe cubique (degré 3) est régie par 4 points de contrôle. Il faut utiliser la progression de 2 courbes de Bézier de degré 2 (soit 6 courbes de Bézier de degré 1) pour tracer une courbe cubique.
définir Courbe | Cubique \[p1, p2, p3, p3] (p1) (p2) (p3) (p4) \[précision] (p) mettre [ß / progression v] à [0] mettre [ß / étapes v] à ((arrondi de ([10^ v] de (p))) + [1]) répéter (ß / étapes) fois Points | Créer Point \[nom] [ß mix A] à partir de \[2x\[nom]] (p1) (p2) \[%] ((ß / progression) / (ß / étapes))::custom Points | Créer Point \[nom] [ß mix B] à partir de \[2x\[nom]] (p2) (p3) \[%] ((ß / progression) / (ß / étapes))::custom Points | Créer Point \[nom] [ß mix C] à partir de \[2x\[nom]] (p3) (p4) \[%] ((ß / progression) / (ß / étapes))::custom Points | Créer Point \[nom] [ß mix AB] à partir de \[2x\[nom]] [ß mix A] [ß mix B] \[%] ((ß / progression) / (ß / étapes))::custom Points | Créer Point \[nom] [ß mix BC] à partir de \[2x\[nom]] [ß mix B] [ß mix C] \[%] ((ß / progression) / (ß / étapes))::custom Points | Créer Point \[nom] [ß mix \[AB\]\[BC\]] à partir de \[2x\[nom]] [ß mix AB] [ß mix BC] \[%] ((ß / progression) / (ß / étapes))::custom Points | Aller à \[nom] [ß mix \[AB\]\[BC\]]::custom stylo en position d'écriture ajouter [1] à [ß / progression v] fin relever le stylo
Degrés supérieurs
En général, on privilégie l'utilisation de courbes cubiques jointes continues au lieu d'utiliser des courbes d'un degré supérieur.