website logo
Auteur
avatar
artblink

Forum » » Création-Développement » » J'ai réussi mon tit moteur 3D


Posté : 27-11-2010 14:03 icone du post

COUCOU

Je suis trop content

voici un ti code pour afficher un Cube en vrai 3D, pas de bidouille de vecteur comme la dernière fois lol.
Si vous la joué fine, vous pouvez afficher n'importe quel objet, mais attention, pour une sphère, c'est plus compliqué , mais j'ai peut être la combine pour afficher des courbes, je la filerai si je la trouve.

Alors, voici les commandes:
touches flèches pour la rotation X et Y

Touche Shift Droit pour un zoom out
Touche control droit pour un zoom in

voici le ti code, attention, se n'es qu'un cube en 3D filaire lol, mais il y a l'antialiasing et on peut l'avoir soit en mode fenêtre ou en mode plein écran... que demande le peuple

Ami hollywoodien, amusez-vous bien... Qui peut me tester se code sur 6800x0, normalement il tourne en 50FPS



@SCREEN?{Mode?=?"ask",?Width?=?640,?Height?=?400}
SetFormStyle(#ANTIALIAS)?;?Antialiasing?sur?le?cube
FC=200
CX=160
CY=100
CZ=200
Function?Controle()
????If?IsKeyDown("Left")=True?Then?Gauche()?;?Vers?la?gauche
????If?IsKeyDown("Right")=True?Then?Droite()?;?Vers?la?droite
????If?IsKeyDown("Up")=True?Then?Haut()?;?Vers?le?Haut
????If?IsKeyDown("Down")=True?Then?Bas()?;?Vers?le?bas
????If?IsKeyDown("RSHIFT")=True?Then?Zoomin()?;?Zoom?in
????If?IsKeyDown("RCONTROL")=True?Then?Zoomout()?;?Zoom?Out
EndFunction

Function?Gauche()
????AY=AY+1
????If?AY>359?Then?AY=0
EndFunction

Function?Droite()
????AY=AY-1
????If?AY<0?Then?AY=359
EndFunction

Function?Haut()
????AX=AX+1
????If?AX>359?Then?AX=0
EndFunction
????????
Function?Bas()
????AX=AX-1
????If?AX<0?Then?AX=359
EndFunction

Function?Zoomin()
????CZ=CZ+10
????If?CZ>500?Then?CZ=500
EndFunction

Function?Zoomout()
????CZ=CZ-10
????If?CZ<80?Then?CZ=80)
EndFunction

Function?PRG()
????
????Controle()?;?Exécution?de?la?fonction?Controle
????;?Réservation?mémoire?et?création?des?tableaux
????Dim?CO[360]?;?360?cases?réservé?car?une?rotation?c'est?360? ?pour?le?Cosinus
????Dim?SI[360]?;?360?cases?réservé?car?une?rotation?c'est?360? ?pour?le?Sinus
????Dim?X[8]?;?Un?cube,?c'est?8?points?en?X
????Dim?Y[8]?;?Un?cube,?c'est?8?points?en?Y
????Dim?Z[8]?;?Un?cube,?c'est?8?points?en?Z
????Dim?XE[8]?;?Point?final?du?cube?a?dessiner?en?X
????Dim?YE[8]?;?Point?final?du?cube?a?dessiner?en?Y
????Dim?ZZ[8]?;?Point?final?du?cube?a?dessiner?en?Z
????Dim?P1[12]?;?Un?cube,?c'est?12?lignes?(point?de?départ?de?la?ligne )
????Dim?P2[12]?;?Un?cube,?c'est?12?lignes?(point?final?de?la?ligne)
????
Flip?;?Flip?d'écran?pour?le?double?buffer
Cls?;?Effacement?de?l'écran?sinon?on?verrait?des?cube?partout?lol

For?I=0?To?359
????CO[I]=Cos(I*0.1)*256?;?Mise?en?mémoire?de?360?calcule?du?Cosinus?d es?angles?sur?360?
????SI[I]=Sin(I*0.1)*256?;?Mise?en?mémoire?de?360?calcule?du?Sinus?des ?angles?sur?360?
Next?

????For?I=0?To?7
????????X?=?{-50,50,50,-50,-50,50,50,-50}?;?Coordonnées?des?points?dan s?l'espace?en?X
????????Y?=?{-50,-50,50,50,-50,-50,50,50}?;?Coordonnées?des?points?dan s?l'espace?en?Y
????????Z?=?{-50,-50,-50,-50,50,50,50,50}?;?Coordonnées?des?points?dan s?l'espace?en?Z
????????P1?=?{0,1,2,3,4,5,6,7,0,1,2,3}?;?Point?de?départ?pour?tracer?l a?ligne
????????P2?=?{1,2,3,0,5,6,7,4,4,5,6,7}?;?Point?d'arrivée?pour?tracer?l a?ligne
????????;Calcule?3D?grâce?au?magazine?Dream?N?27?de?Mars?1996
????????Y1=(Y[I]*CO[AX]+Z[I]*SI[AX])/256
????????Z1=(-Y[I]*SI[AX]+Z[I]*CO[AX])/256
????????X1=(X[I]*CO[AY]+Z1*SI[AY])/256
????????ZZ[I]=(-X[I]*SI[AY]+Z1*CO[AY])/256
????????X=(X1*CO[AZ]+Y1*SI[AZ])/256
????????Y=(-X1*SI[AZ]+Y1*CO[AZ])/256
????????D=FC/(Sqrt(X^2+Y^2+(CZ+ZZ[I])^2))
????????XE[I]=320+X*D
????????YE[I]=200+Y*D
????Next
????;?Calcule?final
????For?I=0?To?11
????????GP1=P1[I]
????????GP2=P2[I]
????????X=XE[GP1]
????????Y=YE[GP1]
????????X1=XE[GP2]
????????Y1=YE[GP2]
????????Line?(X,Y,X1,Y1,#WHITE)?;?Traçage?des?lignes
????Next
EndFunction

BeginDoubleBuffer

SetInterval(1,PRG,1000/50)

Repeat
WaitEvent
Forever



Si vous avez des combines, ne m'oublier pas

Respect

Note de K-L : titre modifié pour éviter les majuscules
Message édité par : K-L / 27-11-2010 14:24

Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=925&forum=14