JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Un p'tit cube Mer 9 Fév 2022 - 9:11 | |
| Juste un gadget... Pour dessiner un parallélépipède rectangle en perspective (cas particulier un cube) Paramètres: emplacement, dimensions de la face avant (et arrière), décalage de la face arrière par rapport à la face avant. - Code:
-
DIM x0,y0,e,d,x1,y1,x2,y2,x3,y3,x4,y4,w,h,dx,dy PICTURE 1: FULL_SPACE 1: 2D_TARGET_IS 1: 2D_PEN_WIDTH 2 w = 300: h = 140: x0 = 100: y0 = 260 dx = 80: ' décalage horizontal (à droite) dy = -80: ' décalage vertical (en haut) Cube3D(x0,y0,w,h,dx,dy) w = 300: h = 40: x0 = 100: y0 = 60 dx = 80: ' décalage horizontal (à droite) dy = 80: ' décalage vertical (en bas) Cube3D(x0,y0,w,h,dx,dy) END
SUB Cube3D(x0,y0,w,h,dx,dy) ' Dessin en x0,y0 sur la cible 2D d'un cube ou parallélépipède rectangle en 3D ' Dimensions face w x h, décalage face arrière H = dx, V = dy (>0 ou <0) ' Trait, couleur: paramètres courants DIM_LOCAL x(2,4),y(2,4),i x(1,1) = x0: x(1,2) = x0+w: x(1,3) = x0+w: x(1,4) = x0 y(1,1) = y0: y(1,2) = y0: y(1,3) = y0+h: y(1,4) = y0+h FOR i = 1 TO 4: x(2,i) = x(1,i)+dx: y(2,i) = y(1,i)+dy: NEXT i IF dy < 0 THEN 2D_LINE x(2,1),y(2,1),x(2,2),y(2,2): ' face arrière IF dx > 0 THEN 2D_LINE x(2,2),y(2,2),x(2,3),y(2,3) IF dy > 0 THEN 2D_LINE x(2,3),y(2,3),x(2,4),y(2,4) IF dx < 0 THEN 2D_LINE x(2,4),y(2,4),x(2,1),y(2,1) ' arêtes IF dy > 0 2D_LINE x(1,3),y(1,3),x(2,3),y(2,3): 2D_LINE x(1,4),y(1,4),x(2,4),y(2,4) IF dx > 0 THEN 2D_LINE x(1,2),y(1,2),x(2,2),y(2,2): ELSE: 2D_LINE x(1,1),y(1,1),x(2,1),y(2,1) ELSE 2D_LINE x(1,1),y(1,1),x(2,1),y(2,1): 2D_LINE x(1,2),y(1,2),x(2,2),y(2,2) IF dx > 0 THEN 2D_LINE x(1,3),y(1,3)-1,x(2,3),y(2,3)-1: ELSE: 2D_LINE x(1,4),y(1,4),x(2,4),y(2,4) END_IF 2D_RECTANGLE x(1,1),y(1,1),x(1,3),y(1,3): ' face avant END_SUB | |
|