Courbes de Béziers
neirdah
-
neirdah -
neirdah -
Bonjour,
je cherche à créer un circuit grâce à un assemblage de courbe de Béziers. Je rencontre néanmoins un problème lorsque j'exécute le code. J'ai en effet l'erreur "name 'figure' is not defined".
voici le code :
Je suis preneur de toute piste, merci !
je cherche à créer un circuit grâce à un assemblage de courbe de Béziers. Je rencontre néanmoins un problème lorsque j'exécute le code. J'ai en effet l'erreur "name 'figure' is not defined".
voici le code :
def vecteur_unitaire(P1,P2):
Ux = P2[0]-P1[0]
Uy = P2[1]-P1[1]
norme = math.sqrt(Ux*Ux+Uy*Uy)
if norme!=0:
return [Ux/norme,Uy/norme]
else:
return False
def test_alignement_4pts(points,epsilon):
U1 = vecteur_unitaire(points[0],points[1])
U2 = vecteur_unitaire(points[1],points[2])
U3 = vecteur_unitaire(points[2],points[3])
if U2:
x = 2.0-(U1[0]*U2[0]+U1[1]*U2[1]+U2[0]*U3[0]+U2[1]*U3[1])
else:
x = 1.0-(U1[0]*U3[0]+U1[1]*U3[1])
if abs(x) < epsilon:
return True
else:
return False
def division_courbe_bezier_3(points_control):
P01 = interpolation_lineaire(points_control[0],points_control[1],0.5)
P12 = interpolation_lineaire(points_control[1],points_control[2],0.5)
P23 = interpolation_lineaire(points_control[2],points_control[3],0.5)
P01_12 = interpolation_lineaire(P01,P12,0.5)
P12_23 = interpolation_lineaire(P12,P23,0.5)
Q = interpolation_lineaire(P01_12,P12_23,0.5)
return ([points_control[0],P01,P01_12,Q],[Q,P12_23,P23,points_control[3]])
def courbe_bezier_3_recursif(points_control,epsilon,pile_points_courbe):
if test_alignement_4pts(points_control,epsilon):
pile_points_courbe.append(points_control[0])
else:
(points_1,points_2) = division_courbe_bezier_3(points_control)
courbe_bezier_3_recursif(points_1,epsilon,pile_points_courbe)
courbe_bezier_3_recursif(points_2,epsilon,pile_points_courbe)
def courbe_bezier_3_recursif_init(points_control,epsilon):
pile_points_courbe = []
courbe_bezier_3_recursif(points_control,epsilon,pile_points_courbe)
pile_points_courbe.append(points_control[-1])
return pile_points_courbe
P0 = [0,0]
P1 = [0.3,1]
P2 = [1,1]
P3 = [1,0]
figure()
epsilon=5e-3
points = courbe_bezier_3_recursif_init([P0,P1,P2,P3],epsilon)
plot_points(points,style='.')
plot_points(points,style='r-')
plot_points([P0,P1,P2,P3],style='o')
axis([0,2,0,2])
grid()
Je suis preneur de toute piste, merci !
Configuration: Windows / Edge 88.0.705.81
A voir également:
- Courbes de Béziers
- Comment faire des courbes sur excel - Guide
- Courbe de prix amazon - Guide
- Decheterie beziers - Guide
- Mettre deux courbes sur un même graphique excel ✓ - Forum Excel
- Excel - 2 courbes (données axe X différentes) ✓ - Forum Excel
3 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour,
peux-tu préciser à quelle ligne se produit l'erreur?
que veux-tu faire en ligne 50?
peux-tu préciser à quelle ligne se produit l'erreur?
que veux-tu faire en ligne 50?
import math from matplotlib import* def courbe_bezier_3_recursif(points_control,epsilon,pile_points_courbe): if test_alignement_4pts(points_control,epsilon): pile_points_courbe.append(points_control[0]) else: (points_1,points_2) = division_courbe_bezier_3(points_control) courbe_bezier_3_recursif(points_1,epsilon,pile_points_courbe) courbe_bezier_3_recursif(points_2,epsilon,pile_points_courbe) def courbe_bezier_3_recursif_init(points_control,epsilon): pile_points_courbe = [] courbe_bezier_3_recursif(points_control,epsilon,pile_points_courbe) pile_points_courbe.append(points_control[-1]) return pile_points_courbe class Courbe: def __init__(self,P0,P1,P2,P3,epsilon): self.points_courbe = [] self.epsilon = epsilon self.bezier_3_recursif_init([P0,P1,P2,P3]) self.points_control = [P0,P1,P2,P3] def bezier_3_recursif_init(self,points_control): courbe_bezier_3_recursif(points_control,self.epsilon,self.points_courbe) self.P2 = points_control[2] self.P3 = points_control[3] def ajouter(self,P2,P3): P0 = self.P3 P1 = [P0[0]+P0[0]-self.P2[0],P0[1]+P0[1]-self.P2[1]] self.bezier_3_recursif_init([P0,P1,P2,P3]) self.points_control.append(P1) self.points_control.append(P2) self.points_control.append(P3) self.dernier_point = P3 def liste_points(self): self.points_courbe.append(self.dernier_point) return self.points_courbe def liste_points_control(self): self.points_control.append(self.dernier_point) return self.points_control courbe = Courbe([0,0],[0,1],[1,1],[1,0],5e-3) courbe.ajouter([2,0],[3,0]) courbe.ajouter([3,1],[2,1.5]) points = courbe.liste_points() points_control = courbe.liste_points_control() figure(figsize=(8,8)) plot_points(points,style='.') plot_points(points,style='r-') plot_points(points_control,'o') axis([0,4,-2,2]) grid()le petit programme de trois lignes que j'ai montré donne un message d'erreur?