Version Française English Version Planete-casio.fr
Bienvenue sur la nouvelle version de planete-casio! Laissez vos impressions sur le forum!
Forums Casio - Astuces Calculatrices Casio

Index du Forum | Astuces Calculatrices Casio | [Tutorial] La 3D
Neuronix
Hors ligne
Statut: Webmaster
Niveau: Elite
Points: 4258
Défis: 21
Email | Message
Posté le 02/01/2006 13:12

[Tutorial] La 3D:

Tout programmeur en basic se pose la question de la 3D ...qui sonne si mystérieusement et délicieusement à l'oreille de tout accro du monde virtuel.

Je propose ici une approche d'une methode de rendu d'objets en 3D. Si vous etes un programmeur courageux et ambitieux passez votre chemin, regardez mes progs Util 3D et graph 3D sans regarder le code et cherchez vous meme

Je vais enployer la méthode du drawstat, pensez à regarder le tutorial dédié à cette technique si vous n'etes pas au point .

On va travailler sur un objet simple : un cube de 2 unités de coté centré sur l'origine.

Entrons ses coordonnées :

{1,1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1}->List 1
{-1,1,1,-1,-1,-1,1,1,1,1,1,1,-1,-1,-1,-1}->List 2
{-1,-1,-1,-1,-1,1,1,-1,1,1,-1,1,1,-1,1,1}->List 3



Notez que pour avoir un beau cube avec tous ses aretes en drawstat il faut repasser par certains pouints d'ou le nombre de points.

Ici List 1 = X List 2 = Y et List 3 = Z

Nous allons partir du principe que pour afficher le cube en 3D il suffit de retenir ses coordonnées en X et Y. Donc essayons d'afficher notre cube :


//paramétrez le s-graph 1 pour le drawstat en xyLine et Dot
S-WindMan // pour que nous puissions imposer la fenetre
View-Window -4,4,0,-2,2,0 // on peux prendre cette fenetre pour l'exemple car avec le coté du cube est de longueur 2
Drawstat


Et là on obtient :
smiley


On dirait un carré et pas un cube car on n'a pas ajouté d'effet de fuite. On fera ça plus tard, pour le moment on va faire tourner le cube sur lui meme

On a les coordonnées cartésiennes des points du cube mais on va utiliser les coordonnées polaires pour la démonstration de la formule que j'ai utilisé qui est sans doute la plus rapide et la plus simple.

On va faire tourner le cube selon le plan x-y puis y-z puis x-z donc en fait à chaque fois on est ramené à une rotation simple dans un plan tel que vous en connaissez depuis la seconde (au moins).

Regardez l'image suivante pour mieux comprendre ce qui suit :
smiley


Le point initial M fait un angle µ avec l'axe des abscisses et est à une distance r de O.
M' le point image apres la rotation est également à une distance r mais fait un angle µ+µ' avec l'axe des abscisses où µ' est l'angle de rotation.

On donc en coordonnées polaires : M(r;µ) M'(r,µ+µ') et en coordonnées cartésiennes M(x,y) et M'(x',y')

On a :
x = r*cos µ x' = r*cos (µ+µ')
y = r*sin µ y' = r*sin (µ+µ')

J'imagine que vous connaissez tous tres bien vos formules de trigo donc je ne vous rappelle pas que
cos (a+b) = cos a*cos b - sin a*sin b
sin (a+b) = sin a*cos b + sin b*cos a

D'où
x' = r*cos µ*cos µ' - r*sin µ*sin µ'
= x*cos µ' - y*sin µ'

y' = r*sin µ*cos µ' + r*sin µ' *cos µ
= y*cos µ' + x*sin µ'

Et voila ! on a une magnifique formule en fonction de x, y et µ' l'angle de rotation!!!!
Simple et extremement rapide! car il suffit de 2 calculs par rotation!

J'ai mis beaucoup beaucoup de temps pour trouver ceci meme si la formule parait simple une fois ecrite il faut y penser...

Voila, je ne vous fais pas le code, je vous laisse gratter un peu quand meme et au passage vous venez de lire en 2 min ce que j'ai cherché pendant des mois...1 an je pense .... (car MOI je voulais faire tout seul )

Code d'exemple :


ClrGraph
{1,1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1}->List 1
{-1,1,1,-1,-1,-1,1,1,1,1,1,1,-1,-1,-1,-1}->List 2
{-1,-1,-1,-1,-1,1,1,-1,1,1,-1,1,1,-1,1,1}->List 3
S-Grph1 DrawOn,xyLine,List1,List2,1,Dot
0->A~C
Do
A?->A
B?->B
C?->C
Cls
Text 1,1,Calcul.
List 1 * cos A - List 2 * sin A ->List 4
List 1 * sin A + List 2 * cos A ->List 2
List 4->List 1
Text 1,30,.
List 2 * cos B - List 3 * sin B ->List 4
List 2 * sin B + List 3 * cos B ->List 3
List 4->List 2
Text 1,34,.
List 1 * cos C - List 3 * sin C ->List 4
List 1 * sin C + List 3 * cos C ->List 3
List 4->List 1
Cls
Drawstat[DISP]
Lpwhile 1=1

Graph 35 + et Classpad 300



Pages: Précédente | 1, 2, 3, 4, 5

Neuronix
Hors ligne
Statut: Webmaster
Niveau: Elite
Points: 4258
Défis: 21
Email | Message
Posté le 29/12/2007 19:22 |
Ce tuto ne gère pas la 3D telle qu'on y est habitué, il permet juste de visualiser des objets en 3D
----------------------------------
Graph 35 + et Classpad 300
Ibi
Hors ligne
Statut: Membre
Niveau: Elite
Points: 586
Défis: 114
Email | Message
Posté le 18/05/2008 15:47 |
Ne serait-il pas possible de créer un moteur qui utilise le Fline (beaucoup plus rapide que le drawstat (dans le cas ou il y a très peu de polygones) ce qui libérerait des listes) et faire varier la fenetre ?

----------------------------------

Pylaterreur
Hors ligne
Statut: Membre
Niveau: Confirmé
Points: 1745
Défis: 8
Email | Message
Posté le 18/05/2008 19:35 |
Ibi, raccourcis ta signature stp
----------------------------------
Graph 85 SD

Mon générateur progresse à grande vitesse, tout est déjà écrit au brouillon, il ne manque plus qu'à coder la fin (intégrer les symboles "long", comme le soulignement).
Pierrotll
En ligne
Statut: Membre
Niveau: Confirmé
Points: 1269
Défis: 9
Email | Message
Posté le 18/05/2008 19:37 |
Clair!! en plus si c'est pour nous coller des screens d'un jeu ti89
Pylaterreur
Hors ligne
Statut: Membre
Niveau: Confirmé
Points: 1745
Défis: 8
Email | Message
Posté le 18/05/2008 19:40 |
au format bmp, en plus de ça...
----------------------------------
Graph 85 SD

Mon générateur progresse à grande vitesse, tout est déjà écrit au brouillon, il ne manque plus qu'à coder la fin (intégrer les symboles "long", comme le soulignement).
Zefortiche
Hors ligne
Statut: Super admin
Niveau: Confirmé
Points: 5199
Défis: 54
Email | Message
Posté le 18/05/2008 19:58 |
Sous Firefox : bloquer les images provenant de...

Plus de problème comme ça.
----------------------------------
Calculatrices : Graph 35+, G100+
Ibi
Hors ligne
Statut: Membre
Niveau: Elite
Points: 586
Défis: 114
Email | Message
Posté le 18/05/2008 20:30 |
Bon, ca va j'ai compris. En plus le jeu fonctionne sur

Graph 25 (simplifié),35,35+,65,85,100,classpad300
+ sur toutes les ti a partir de la 80

----------------------------------


Pages: Précédente | 1, 2, 3, 4, 5

Index du Forum | Astuces Calculatrices Casio | [Tutorial] La 3D
Pseudo :
Adresse email :
Réponse :
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :?:  :arrow:  :!:  :here:
Ajouter fichier joint :


Me prévenir par mail lorsqu'une réponse est postée



Recherche :
Publicité et partenaires
Top Cinema par les créateurs de Planete Casio :
Découvrez le classement des meilleurs films et séries sur Top-cinema.com !

www.planete-casio.fr v3.0 © crée par Neuronix et Muelsaco 2007
Il y a 17 connectés | Nous contacter | Recherches effectuées | Liens | Forum Commun Casio