
- Code: Tout sélectionner
' 3D CUBE
' QB64 code by Relsoft 2003
' GFW code by Fantomas
'
DIM CubeM(8, 7), CubeV(12, 2)
FOR V = 1 TO 8 + 12
IF V<9
READ CubeM(V, 0), CubeM(V, 1), CubeM(V, 2)
ELSE
READ CubeV(V - 8, 0), CubeV(V - 8, 1), CubeV(V - 8, 2)
ENDIF
NEXT V
OPENW #1,(_X/2)-180,(_Y/2)-180,360,360,%001110000
TITLEW #1," 3D Cube"
'
' Crée Image de fond
hidden& = CREATEBMP(640,480)
logic& = MEMDC(_DC(1))
SETBMP logic&,hidden&
SETDC logic&
DEFFILL 0
'
REPEAT
PEEKEVENT
ax=ax+.2
ay=ay+.2
az=az+.2
FOR I% = 1 TO 8
CubeM(I%, 6) = (256 * ((CubeM(I%, 0) * (COSQ(ay) * COSQ(az)) + CubeM(I%, 1) * (COSQ(ax) * -SINQ(az) + SINQ(ax) * SINQ(ay) * COSQ(az)) + CubeM(I%, 2) * (-SINQ(ax) * -SINQ(az) + COSQ(ax) * SINQ(ay) * COSQ(az)))))
CubeM(I%,6)=CubeM(I%,6)/(256 - ((CubeM(I%, 0) * (-SINQ(ay)) + CubeM(I%, 1) * (SINQ(ax) * COSQ(ay)) + CubeM(I%, 2) * (COSQ(ax) * COSQ(ay))))) + 180
CubeM(I%, 7) = -(256 * ((CubeM(I%, 0) * (COSQ(ay) * SINQ(az)) + CubeM(I%, 1) * (COSQ(ax) * COSQ(az) + SINQ(ax) * SINQ(ay) * SINQ(az)) + CubeM(I%, 2) * (-SINQ(ax) * COSQ(az) + COSQ(az) * SINQ(ay) * SINQ(az)))) )
CubeM(I%,7)=CubeM(I%,7)/(256 - ((CubeM(I%, 0) * (-SINQ(ay)) + CubeM(I%, 1) * (SINQ(ax) * COSQ(ay)) + CubeM(I%, 2) * (COSQ(ax) * COSQ(ay))))) + 170
NEXT I%
RGBCOLOR RGB(0,0,0)
PBOX 0, 0,360, 360
FOR I% = 1 TO 12
IF (CubeM(CubeV(I%, 2), 6) - CubeM(CubeV(I%, 0), 6)) * (CubeM(CubeV(I%, 1), 7) - CubeM(CubeV(I%, 0), 7)) - (CubeM(CubeV(I%, 1), 6) - CubeM(CubeV(I%, 0), 6)) * (CubeM(CubeV(I%, 2), 7) - CubeM(CubeV(I%, 0), 7)) < -256
COLOR I%+2
LINE CubeM(CubeV(I%, 0), 6), CubeM(CubeV(I%, 0), 7),CubeM(CubeV(I%, 1), 6), CubeM(CubeV(I%, 1), 7)
LINE CubeM(CubeV(I%, 1), 6), CubeM(CubeV(I%, 1), 7),CubeM(CubeV(I%, 2), 6), CubeM(CubeV(I%, 2), 7)
LINE CubeM(CubeV(I%, 2), 6), CubeM(CubeV(I%, 2), 7),CubeM(CubeV(I%, 0), 6), CubeM(CubeV(I%, 0), 7)
FILL (CubeM(CubeV(I%, 0), 6) + CubeM(CubeV(I%, 1), 6) + CubeM(CubeV(I%, 2), 6)) / 3, (CubeM(CubeV(I%, 0), 7) + CubeM(CubeV(I%, 1), 7) + CubeM(CubeV(I%, 2), 7)) / 3
ENDIF
NEXT I%
BITBLT logic&,0,0,360,360,_DC(1),0,0,SRCCOPY
LOOP UNTIL INKEY$ <> ""
FREEDC logic&
CLOSEW #1
END
DATA -80,-80,-80,80,-80,-80,80, 80,-80,-80, 80,-80,-80,-80, 80,80,-80, 80,80, 80, 80, -80, 80, 80
DATA 5,1,8,1,4,8,6,5,7,5,8,7,2,6,3,6,7,3,1,2,4,2,3,4,4,3,8,3,7,8,5,6,1,6,2,1

Fantomas
