Cube 3d en fil de fer

Soyez le premier à donner votre avis sur cette source.

Vue 4 368 fois - Téléchargée 407 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
Messages postés
176
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
9 mai 2008

OK, merci à tous pour votre aide.
Kirua : je vais me renseigner sur Bresenham. Merci encore.
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

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".
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

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).
Messages postés
18
Date d'inscription
dimanche 13 avril 2003
Statut
Membre
Dernière intervention
27 mai 2005

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
Messages postés
25
Date d'inscription
mercredi 28 mai 2003
Statut
Membre
Dernière intervention
24 septembre 2004

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.