Bonjour,
Je débute en Python et je voudrais coder la surface de Bézier décrite dans le lien :
http://www.paris-lavillette.archi.fr...e_BezierTC.htm
dans la partie: 1.1 Les carreaux de Bézier
et voici mon programme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import math
import time
import random
import numpy
import scipy
from scipy import misc
def P(U,V):
    # les degrés
    m = 3
    n = 3
    #mes points de contrôle Pij sont:
    Pij = [[[-1.5, -1.5, 4.0], [-0.5, -1.5, 2.0],
    [0.5, -1.5, -1.0], [1.5, -1.5, 2.0]],
    [[-1.5, -0.5, 1.0], [-0.5, -0.5, 3.0],
    [0.5, -0.5, 0.0], [1.5, -0.5, -1.0]],
    [[-1.5, 0.5, 4.0], [-0.5, 0.5, 0.0],
    [0.5, 0.5, 3.0], [1.5, 0.5, 4.0]],
    [[-1.5, 1.5, -2.0], [-0.5, 1.5, -2.0],
    [0.5, 1.5, 0.0], [1.5, 1.5, -1.0]]]
    #Je construis les polynômes de Bernstein:
    Bm = []
    Bn = []
    for i in range(m):
        Bim = scipy.misc.comb(m,i) * pow(U,i) * pow((1-U),m-i)
        Bm.append(Bim)
        Bm = numpy.array(Bm)
    for j in range(n):
        Bjn = scipy.misc.comb(n,j) * pow(V,j) * pow((1-V),n-j)
        Bn.append(Bjn)
        Bn = numpy.array(Bn)
    # Ensuite je calcule ma surface P:
    p = []
    for i in range (m):
        sum1 = 0
        sum2 = 0
        sum3 = 0
        p1 = []
        p2 = []
        p3 = []
        for j in range(n):
            sum1 += Bm[i]*Bn[j]* pij[i][j][0]
            sum2 += Bm[i]*Bn[j]* pij[i][j][1]
            sum3 += Bm[i]*Bn[j]* pij[i][j][2]
            p1.append(sum1)
            p2.append(sum2)
            p3.append(sum3)
        s1 = sum(p1)
        s2 = sum(p2)
        s3 = sum(p3)
        p.append(s1)
        p.append(s2)
        p.append(s3)
    return p
ensuite pour mes valeurs U et V, je construis un vecteur de tuples de valeurs aléatoires entre 0 et 1, et j'applique ma fonction à chaque tuple (U,V) du vecteur, ce qui devrait me donner ma surface de Bézier lisse,
quand j'essaye de visualiser ma surface avec pylab, je ne retrouve pas la bonne surface de Bézier, j'ai dû me tromper dans l'algo, mais je ne trouve pas l'erreur, pourriez vous m'aider svp?