Attention ! On ne peut pas additionner des coordonnées, mais en 3ème année nous avons vu comment additionner les vecteurs.

Pour travailler facilement avec les mathématiques des vecteurs en Python, il est essentiel d'utiliser le package NumPy. Ce dernier simplifie les opérations sur les vecteurs, comme la multiplication par un nombre réel ou l'addition de vecteurs. Grâce à NumPy, nous pouvons effectuer ces opérations de manière efficace et concise, ce qui est particulièrement utile dans le calcul des courbes de Bézier.

Rappel : les courbes de Bézier cubiques sont définies par quatre points de contrôle et pour déterminer la position d'un point sur la courbe à un moment donné t, il est nécessaire de réaliser plusieurs calculs impliquant des vecteurs.

Code

import pyxel
import numpy as np

SEGMENTS = 1000

def bezier_point(vec_ctrls, t):
    p = (1-t)**3 * vec_ctrls[0] + 3*(1-t)**2*t * vec_ctrls[1] + 3*(1-t)*t**2 * vec_ctrls[2] + t**3 * vec_ctrls[3]
    return p

def bezier_points(pt_ctrls):
    vec_ctrls = np.array(pt_ctrls)

    points = []
    for i in range(SEGMENTS + 1):
        t = i / SEGMENTS
        points.append(bezier_point(vec_ctrls, t))
    return points

def trace(pt_ctrls, couleur):
    for p in bezier_points(pt_ctrls):
        pyxel.circ(*p, 2, couleur)


pyxel.init(400, 400)

pyxel.colors[0] = 0xAFD6B4
pyxel.colors[1] = 0xf59690

pyxel.cls(0)

points_de_controle = [
    [100, 100],
    [300, 100],
    [100, 300],
    [300, 300]
]

trace(points_de_controle, 1)

pyxel.show()

Image

Modifié le: dimanche 29 septembre 2024, 19:15