Cube 3d en fil de fer

5/5 (15 avis)

Vue 4 594 fois - Téléchargée 414 fois

Description

Salut à tous,

En fait, je ne sais pas quoi dire - C'est ma premère source, je suis tout ému :'( - à part ce qu'il y a marqué dans le titre, c'est à dire que c'est un cube en 3D (Quoique je me pose encore la queston). Mais, malheuresement, le cube est en "rendu" fil de fer... Si quelqu'un à une idée pour y remédier, qu'il me la présente.
Voilà, je vais bientôt mettre plus d'explications dans le zip, avec un image pour expliquer le fonctionnement (C'est plus simple avec des images :).

-----------------------------------------------------------------------------
Version mise à jour le 21 Mai 2004 : Amélioration des variables
Version màj le 21 Mai 2004 : Correction des erreurs... ;)

Source / Exemple :


Option Explicit

Dim X0 As Integer, Y0 As Integer         '  centre de l'écran
Dim e As Single                                 '  échelle
Dim t As Single, p As Single
Dim ct As Single                                 '  COS t
Dim st As Single                                 '  SIN t
Dim cp As Single                                 '  COS p
Dim sp As Single                                 '  SIN p
Dim x(1 To 8) As Single, y(1 To 8) As Single  '  8 sommet du cube

Const PI As Single = 3.141559

Private Sub Form_Load()
X0 = Qbe.ScaleWidth / 2
Y0 = Qbe.ScaleHeight / 2
e = Qbe.ScaleWidth / 5
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, Xx As Single, Yy As Single)

t = (Xx - X0) / X0 * PI
p = (Yy - Y0) / Y0 * PI
ct = Cos(t)
st = Sin(t)
cp = Cos(p)
sp = Sin(p)

x(1) = X0 + e * (st * cp + ct + st * sp)
x(2) = X0 + e * (st * cp + ct - st * sp)
x(3) = X0 + e * (st * cp - ct + st * sp)
x(4) = X0 + e * (st * cp - ct - st * sp)
x(5) = X0 + e * (-st * cp + ct + st * sp)
x(6) = X0 + e * (-st * cp + ct - st * sp)
x(7) = X0 + e * (-st * cp - ct + st * sp)
x(8) = X0 + e * (-st * cp - ct - st * sp)

y(1) = Y0 + e * (-sp + cp)
y(2) = Y0 + e * (-sp - cp)
y(3) = Y0 + e * (-sp + cp)
y(4) = Y0 + e * (-sp - cp)
y(5) = Y0 + e * (sp + cp)
y(6) = Y0 + e * (sp - cp)
y(7) = Y0 + e * (sp + cp)
y(8) = Y0 + e * (sp - cp)

Cls
Line (x(1), y(1))-(x(2), y(2))
Line (x(1), y(1))-(x(3), y(3))
Line (x(1), y(1))-(x(5), y(5))
Line (x(2), y(2))-(x(4), y(4))
Line (x(2), y(2))-(x(6), y(6))
Line (x(3), y(3))-(x(4), y(4))
Line (x(3), y(3))-(x(7), y(7))
Line (x(4), y(4))-(x(8), y(8))
Line (x(5), y(5))-(x(6), y(6))
Line (x(5), y(5))-(x(7), y(7))
Line (x(6), y(6))-(x(8), y(8))
Line (x(7), y(7))-(x(8), y(8))

End Sub

Conclusion :


C'est tout bête, mais ca m'a pris du temps...

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cs_Linuss Messages postés 176 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 9 mai 2008
25 juin 2004 à 14:03
OK, merci à tous pour votre aide.
Kirua : je vais me renseigner sur Bresenham. Merci encore.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
22 juin 2004 à 14:45
suis dsl, c'est B-R-E-S-E-N-H-A-M
Bresenham est un mathématicien assez connu en fait, tout spécialement pour sa routine de dessin de droites dans un "champ de pixels".
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
22 juin 2004 à 14:44
pr le cube plein, je me renseignerais sur les algos de Brsenham si j'étais toi, il a écrit pas mal de routines très optimisées pour les dessins en 2D, et il en a sûrement faits pour remplir des polygones en 2D. (parce que au final, tu ne dois remplir "que" des losanges, plus des carrés en 3D).
aurelskull Messages postés 18 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 27 mai 2005
26 mai 2004 à 18:52
juste une modif sur les directions gauche droite :

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, Xx As Single, Yy As Single)
'On ne déclare pas P et t car ils sont calculés en temps réel

t = (X0 - Xx) / X0 * PI
p = (Yy - Y0) / Y0 * PI

bien realisé en tous cas
felicitation
ToshiBaba Messages postés 25 Date d'inscription mercredi 28 mai 2003 Statut Membre Dernière intervention 24 septembre 2004
25 mai 2004 à 07:12
Très bien joué :) Bravo !
Petite question : si tu précalcules tes sin et cos et les mettre dans un tableau (tu lances les calculs dans le form_load, par exemple) est-ce que ça n'accèlèrerait pas ta routine ? Je ne sais pas trop comment sont gérés les sin et les cos dans vb, donc si ça se trouve ca ne change absolument rien :p
@pluche
Afficher les 15 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.