begin process at 2010 03 21 18:40:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > CUBE 3D EN FIL DE FER

CUBE 3D EN FIL DE FER


 Information sur la source

Note :
8,5 / 10 - par 8 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Niveau :Débutant Date de création :19/05/2004 Date de mise à jour :21/05/2004 21:25:35 Vu / téléchargé :2 273 / 298

Auteur : Linuss

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • 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
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...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) COMPARAISON D'IMAGE par mafieulemouton
Source avec Zip Source avec une capture Source .NET (Dotnet) RECADRER_IMAGE par Le Pivert
Source avec Zip Source avec une capture Source .NET (Dotnet) EDITION DE CARACTÈRES MATRICIELS (POUR BITMAP, CF CODE 128) par Blodox
Source avec Zip Source avec une capture CRÉATION D'UN MASQUE GRAPHIQUE POUR MODIFIER LA COULEUR D'UN... par Dudule_73
Source avec Zip Source avec une capture Source .NET (Dotnet) GÉNÉRATEUR DE CODE 128 (CODE-BARRE) par Blodox

Commentaires et avis

Commentaire de TheHacker le 19/05/2004 23:22:53

pour une premiere source c plutot cool bien joué, j'met 9/10 :)

Commentaire de Linuss le 20/05/2004 11:15:10

Merci...
En fait, j'ai oublié de dire que le cube bouge avec la souris :)

Commentaire de Yuchi le 20/05/2004 14:31:43

moi je trouve pas sa tout bete ...
9/10

Commentaire de cheyenne le 20/05/2004 16:18:07

Bonjour,

C'est bien, c'est un bon début...

Conseils :
Prendre l'habitude de déclarer systématiquement les variables avec le type adéquat.
Puisque, ici, certaines variables sont calculées en temps réél, il faut les inclure dans la section de déclaration.
Ne pas les déclarer fait perdre du temps machine car VB adopte le type en fonction du résultat.
Puisque PI est immuable en faire une constante.

-------------------------------------------------------------------------
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 t
Dim x(1 To 8) As Single, y(1 To 8) As Single    '  8 sommet du cube

Const PI As Single = 3.141559
---------------------------------------------------------------------------

Amicalement de Cheyenne

Commentaire de Linuss le 20/05/2004 22:24:00

Je retiens et je met à jour..
Merci

Commentaire de Turakam le 20/05/2004 23:51:29

C'est sympa je me suis eclater a faire tourner le cube pendant o moins 5 min lol 9/10

Commentaire de IdhaoBlue le 21/05/2004 10:24:49

C'est pas tout bete et c'est sympa. Peut être bientôt une version avec un cube 'plein' ?? :)

Commentaire de Linuss le 21/05/2004 16:55:59

Pour e cube plein, je vais essayer mais en fait je n'ai pas encore d'idée. Mais je vais chercher dès ce week-end.

Commentaire de Linuss le 21/05/2004 17:05:27

En fait, moi aussi je passe mes journée à le faire tourner (quand même pas mais je trouve ca trop amusant :)

Commentaire de Linuss le 21/05/2004 17:13:51

Bon, j'ai mis le programme à jour.
Mais pas encore de cube "plein".
Surement dans quelques jours.

Commentaire de ToshiBaba le 25/05/2004 07:12:14

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

Commentaire de aurelskull le 26/05/2004 18:52:02

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

Commentaire de Kirua le 22/06/2004 14:44:17

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).

Commentaire de Kirua le 22/06/2004 14:45:46

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".

Commentaire de Linuss le 25/06/2004 14:03:18

OK, merci à tous pour votre aide.
Kirua : je vais me renseigner sur Bresenham. Merci encore.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales