3D Cube

3D Cube

Messagede Fantomas » Mar 21 Sep 2010 17:06

Conversion en GFW d'un programme de Relsoft à l'origine en QB64: un cube 3D animé ;)

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


Image

Fantomas :mrgreen:
Avatar de l’utilisateur
Fantomas
 
Messages: 43
Inscription: Dim 4 Jan 2009 11:52

Retourner vers GFA PC

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron