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 |
Partager