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 54 55 56 57 58 59 60 61 62
| import pygame,math,time
import numpy as np
RED=(255,0,0)
GREEN=(0,255,0)
BLUE=(0,0,255)
BLACK=(0,0,0)
GRAY=(128,128,128)
WHITE=(255,255,255)
YELLOW=(0,255,255)
def drawFace(screen,face,color=(0,0,255),echelle=200,centre=(512,400)):
npoints=face.shape[0]
for i in range(0,npoints-1):
pygame.draw.aaline(screen, color, \
(centre[0]+echelle*face[i,0]/face[i,2], centre[1]-echelle*face[i,1]/face[i,2]), \
(centre[0]+echelle*face[i+1,0]/face[i+1,2], centre[1]-echelle*face[i+1,1]/face[i+1,2]))
pygame.draw.aaline(screen, color, \
(centre[0]+echelle*face[npoints-1,0]/face[npoints-1,2], centre[1]-echelle*face[npoints-1,1]/face[npoints-1,2]), \
(centre[0]+echelle*face[0,0]/face[0,2], centre[1]-echelle*face[0,1]/face[0,2]))
def cube(L):
faceA=np.matrix([[float(L)/2,-float(L)/2,float(L)/2],[float(L)/2,float(L)/2,float(L)/2],[float(L)/2,float(L)/2,-float(L)/2],[float(L)/2,-float(L)/2,-float(L)/2]])
faceB=np.matrix([[float(L)/2,float(L)/2,float(L)/2],[-float(L)/2,float(L)/2,float(L)/2],[-float(L)/2,float(L)/2,-float(L)/2],[float(L)/2,-float(L)/2,-float(L)/2]])
faceC=np.matrix([[float(L)/2,-float(L)/2,float(L)/2],[float(L)/2,float(L)/2,float(L)/2],[-float(L)/2,float(L)/2,float(L)/2],[-float(L)/2,-float(L)/2,float(L)/2]])
faceD=(-1)*faceA
faceE=(-1)*faceB
faceF=(-1)*faceC
return [faceA, faceB, faceC, faceD, faceE, faceF]
cube(2)
screen = pygame.display.set_mode((1024, 800))
running = 1
face1=np.matrix([[0.5,-0.5,3],[-0.5,0.5,3],[0.5,0.5,3],[0.5,-0.5,3]])
face2=np.matrix([[-3.5,-0.5,3],[-3.5,0.5,3],[-2.5,0.5,3.5],[-2.5,-0.5,3.5]])
face3=np.matrix([[2.5,-0.5,3.5],[2.5,0.5,3.5],[3.5,0.5,3],[3.5,-0.5,3]])
def translation(face, dx, dy,dz):
X=np.matrix([[dx,0,0],[dx,0,0],[dx,0,0],[dx,0,0]])
Y=np.matrix([[0,dy,0],[0,dy,0],[0,dy,0],[0,dy,0]])
Z=np.matrix([[0,0,dz],[0,0,dz],[0,0,dz],[0,0,dz]])
T=X+Y+Z
return face+T
def rotation(point,a):
M=[[math.cos(a),math.sin(a),0],[-math.sin(a),math.cos(a),0],[0,0,1]]
R=(point)*M
return R
P=np.matrix([0,0,1])
print rotation(P,90) |
Partager