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
| #inverse d'une matrice (2,2)
def inverse (L):
D=L[0]*L[3]-L[1]*L[2]
I=[L[3],-L[2],-L[1],L[0]]
I=[I[0]/D,I[1]/D,I[2]/D,I[3]/D]
return I
# vecteur joignant deux points
def vecteur (A,B):
V=[B[0]-A[0],B[1]-A[1]]
return V
# centre de gravité d'un quadrilatère qcq
def centreG(A,B,C,D):
return [(A[0]+B[0]+C[0]+D[0])/4,(A[1]+B[1]+C[1]+D[1])/4]
# formules de changement de repère dans le repère lié au rectangle
def chgtrep(X,Y,A,B,C,D):
G=centreG(A,B,C,D)
V1=vecteur(A,B)
V2=vecteur(A,D)
M=inverse(V1[0],V2[0],V1[1],V2[1])
X1=X-G[0]
Y1=Y-G[1]
X1=M[0]*X1+M[1]*Y1
Y1=M[2]*X1+M[3]*Y1
return [X1,Y1]
# teste si le point est à l'intérieur du rectangle
def IsIn (M,A,B,C,D):
NC=chgtrep(M[0],M[1],A,B,C,D)
return abs(NC[0])<0.5 and abs(NC[1]<0.5) |
Partager