Pages: [1] 2 3   Bas de page
Imprimer
Auteur Fil de discussion: [tuto]De la 3D sur casio  (Lu 1280 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Pouer Hors ligne
Sr. Member
****
Messages: 481


Voir le profil
« 07 Mai 2008, 15:28:37 »

Bonjour,

Je vient vous proposer aujourd'hui un petit tuto assez simple mais pour changer c'est sur la casio (graph35 pour le tuto) Cheesy
Ok cette machine est pas du tout faite pour afficher de la 3D, mais voir la vu "fils de fer" quand on travail dans un repère (O,i,j,k) c'est quand même appréciable d'avoir un aperçu de la figure, je sait que l'on peut faire cela de tête mais je sait pas pourquoi mais des que je passe de la 2D a la 3D tout d'un coup ma tête s'embrouille Smiley

Un petit aperçu de ce qui va être fait, étant sur casio le langage utilisé sera le basic, je me base sur la doc opengl et sur l'article de kayl qui explique très bien comment marche les transformations Wink

Petite remarque, ma façon de programmer est un peu bizarre etant donner que le seul moyen de passer des paramètres a une 'fonction' c'est de les placer dans des variable et ensuite d'appeler la fonction.

Pour commencer, on va faire un programme qui charge la matrice d'identité (dans la matrice A qui sera utilisé comme matrice de base et la matrice ans utiliser pour les calcul intermédiaire Wink)

prog "IDENTITY"
Code
(vb):
Identity 4->Mat A
return
 

Maintenant un programme qui va se charger de faire des translation sur le repere, en lui passant dans x la translation en x, idem pour y et z :

prog "TRANSLAT"
Code
(vb):
[[1, 0, 0, x][0, 1, 0, y][0, 0, 1, z][0, 0, 0, 1]]*Mat A->Mat A
return
 

Un autre qui se charge de faire les changement d'échelle sur le repère (toujours en passant x, y, z en paramètre ou chaque variable contient le coef multiplicateur de l'échelle actuelle)

prog "SCALE"
Code
(vb):
[[x, 0, 0, 0][0, y, 0, 0][0, 0, z, 0][0, 0, 0, 1]]*Mat A->Mat A
return
 

et le dernier qui effectue les rotations du repère en utilisant téta (note O <-> alpha + ^) pour l'angle de la rotation et en mettant a 1 l'axe ou les axes sur lequel faire la rotation, et en mettant a 0 les autres.

prog "ROTATION"
Code
(vb):
cos (O) -> C
sin (O) -> S
[[X(1-C)+C, XY(1-C)-ZS, XZ(1-C)+YS, 0][YX(1-C)+ZS, Y(1-C)+C, YZ(1-C)-XS, 0][XZ(1-C)-YS, YZ(1-C)+XS, Z(1-C)+C, 0][0, 0, 0, 1]*Mat A->Mat A
return
 
Et la un des prog clé qui prend en paramètre (x, y, z) les coordonnées d'un points quelconque du repère puis les transforme en un point affichable sur l'écran.

prog "VEC2NVEC" <-> Vecteur 2 New Vecteur
Code
(vb):
Mat A*[[1, 0, 0, X][0, 1, 0, Y][0, 0, 1, Z][0, 0, 0, 1]]
Mat Ans[1,4]->X
Mat Ans[2,4]->Y
Mat Ans[3,4]->Z
return
 
Voila maintenant avec c'est quelques programmes on peut afficher des objet 3D sur l'écran  Cheesy

Comment faire Huh? ? et bien voila la marche a suivre :

prog "DRAW"
Code
(vb):
'prépare la fenêtre'
ViewWindow 1, 127, 0, 1, 63, 0
cls
prog "IDENTITY"
'Éventuelles transformation du repère'
'-------------'
(pi/3)->O
1->Z
0->X
0->Y
prog "ROTATION"
0->Z
1-X
1-Y
prog "ROTATION"
'-------------'
'dessine le repere (O, i, j, k)'
0->X
0->Y
0->Z
prog "VEC2NVEC"
X->U
Y->V
Z->K
'Conserve les valeur du points centrale'
15->X
prog "VEC2NVEC"
F-line U+64, V+32, X+64, Y+32
'X+64 et Y+32 Pour centrer le repère dans l'écran'
0->X
15->Y
prog "VEC2NVEC"
F-line U+64, V+32, X+64, Y+32
0->Y
-15->Z
prog "VEC2NVEC"
F-line U+64, V+32, X+64, Y+32
lbl 0
goto 0
 

Et voila si tout c'est bien passé vous devriez avoir un beau repere (O, i, j , k) au centre de l'écran, qui est bien sur mieux visible en faisant une rotation Wink

Et maintenant pour afficher des figure plus complexes comme une cube... il suffit de rentrer la coordonner de la transformer et de l'afficher rien de plus simple Wink

Moi pour me simplifier la vie je me tout les X dans la List 1, Y dans la List 2 et Z dans la List 3
Ainsi pour les afficher il suffit de transformer tout les points et de les stocker dans des List miroirs exemple 4, 5, 6 et ensuite grâce a la méthode du drawstat de tous les tracer Smiley La méthode du drawstat et surtout utiliser pour la rapidité d'affichage et le fait qu'elle permet de relier chaque points dessiner au précédant le seul bémol et qu'il faut rentrer le point les autres point puis encore une fois le premier point de façon a fermer le polygone de même après chaque polygone il faut mettre un points de coordonné très grande par exemple (-1000, -1000, -1000) de façon a ce que le point qui précède celui la et celui qui le suis ne soient pas relier ensemble Wink

Voila c'est tout pour le moment si vous avez des questions n'hésitaient pas demandez moi Wink
Maintenant tous a vos caltos Smiley
« Dernière édition: 10 Mai 2008, 08:09:42 par Pouer » Journalisée
Cid2Mizard Hors ligne
Mega Member
***
Messages: 3164


Voir le profil WWW
Disciple Kukulcanien

« Réponse #1 : 09 Mai 2008, 09:46:23 »

Roh excellent lol
Journalisée

Pouer Hors ligne
Sr. Member
****
Messages: 481


Voir le profil
« Réponse #2 : 09 Mai 2008, 10:00:12 »

Je vais poster un petit screen que j'ai pris ce matin pour vous montrer le résultat Wink

voila le petit screen :



* IMG_0023.JPG (732.97 Ko, 2272x1704 - vu 232 fois.)
« Dernière édition: 09 Mai 2008, 10:18:24 par Pouer » Journalisée
Minishlink Hors ligne
Mega Member
***
Messages: 1020


Voir le profil WWW
Quand on veut, on peut !

« Réponse #3 : 09 Mai 2008, 11:38:45 »

L'année prochaine, j'essayerai ça, parce que là j'ai pas de calculette comme celle-ci.
En tout cas ça m'a l'air plus si compliqué quand t'expliques. Azn
Journalisée

http://minishlink.lyokoproject.com/images/bannTH.pnghttp://www.lyokoproject.com/banlp_88x31.jpg
Vloz Hors ligne
Jr. Member
**
Messages: 86


Voir le profil WWW
« Réponse #4 : 09 Mai 2008, 15:44:45 »

J'en ai un peu chi** pour respecter la syntax au début (c'était la premiere fois que je me servais de ma graph35+ pour autre chose que des additions... j'éxagere à peine...), mais aprés une petite demi heure, j'ai réussis à afficher mon repere troadai.  Kiss
Ca faisais un moment que je voulais voir à quoi ressemblait le coding sur ma calculette, merci beaucoup  Pouer pour le tuto.  Smiley
Journalisée

http://vlozbob.free.fr/snake.pnghttp://vlozbob.free.fr/pong.png
birslip Hors ligne
Administrateur
*****
Messages: 363


Voir le profil WWW
« Réponse #5 : 09 Mai 2008, 17:09:49 »

Hehe c'est sympa comme tout, j'ai pas eu trop le temps de poster avant, et surtout que je voyais pas à quoi ça pouvait ressembler, avec la photo, c'est mieux! Par contre je sais pas si c'est très rapide  whistle
Journalisée
yaouank Hors ligne
Newbie
*
Messages: 48


Voir le profil
« Réponse #6 : 09 Mai 2008, 18:16:15 »

Je vais poster un petit screen que j'ai pris ce matin pour vous montrer le résultat Wink

voila le petit screen :


Bon choix de fond pour la photo. Ca faisait longtemps que je n'avais pas vu de feuilles à grands carreaux. (30 ans et je parle déjà comme un papy)
Journalisée
Cobain Hors ligne
Hero Member
*****
Messages: 662


Voir le profil WWW
mes talents de graphiste lol

« Réponse #7 : 09 Mai 2008, 21:42:15 »

super la physique Cheesy
Journalisée

DS fat +
GBAMP + flashme + 3CF 1Go
R4 + MicroSD 2Go

Mes Projets
Mon Blog
Mony Hors ligne
Full Member
***
Messages: 217


Voir le profil WWW
\o/

« Réponse #8 : 09 Mai 2008, 23:02:57 »

Kool, faudrait que j'achète une calculatrice plus évoluée...
Journalisée

Compo Débile : http://www.dev-fr.org/index.php/board,77.0.html Smiley                               Mon DevBlog : http://mony.dev-fr.org/
Pouer Hors ligne
Sr. Member
****
Messages: 481


Voir le profil
« Réponse #9 : 10 Mai 2008, 08:07:59 »

Si mes souvenirs sont bon ca a mit ~25 sec à afficher ces deux cubes mais faut dire que c'est pas une bête de course ma calto, tout le Basic est interprété donc pas top, le top se serait d'avoir une graph 100 ou une ti de façon a le faire en c ou asm la se serait valable. Mais bon généralement en math c'est rarement plus de 4~5 points qu'ils faut afficher donc ça reste relativement rapide.

Sinon dans quelques jours je ne sait pas trop quand je vais rajouter une extension au tuto pour pouvoir tracer les graphs 3D, vu que l'ont fait ça en spe dans pas longtemps ca sera bien d'avoir un prog qui me les affiches Wink Je mettrait aussi comment je fait mes "Call list" pour pas devoir tout taper dans le programme.
Journalisée
unkwar Hors ligne
Sr. Member
****
Messages: 440


Voir le profil
Oeil de L1NX

« Réponse #10 : 10 Mai 2008, 08:27:39 »

ouais, la TI-89 ya que ça de vrai Cheesy
Journalisée

Pouer Hors ligne
Sr. Member
****
Messages: 481


Voir le profil
« Réponse #11 : 10 Mai 2008, 08:28:51 »

Ouais mais bon un petit menu sa ne ferait pas de mal Azn
Journalisée
Matronix Hors ligne
Jr. Member
**
Messages: 56


Voir le profil WWW
« Réponse #12 : 17 Mai 2008, 14:28:55 »

holala quand je vois ce topic, je ne peux m'empêcher de faire ma pub Azn

ici le meilleur site de programamtion casio (Azn) : http://www.planet-casio.com/Fr/
 Cheesy

Sinon pour répondre, il y a plus puissant que la graph 100, la graph 85 !
La graph 85 est la plus puissante des calculatrices, TI comprises, de la gamme lycée.


Edit : j'ai regardé ton code, inutile de mettre eds return dans tes sous programmes s'il n'y a rien derrière, et ton lbl 0/goto 0 final ne sert à rien.
« Dernière édition: 17 Mai 2008, 15:50:07 par Matronix » Journalisée
Pouer Hors ligne
Sr. Member
****
Messages: 481


Voir le profil
« Réponse #13 : 17 Mai 2008, 15:54:56 »

En effet planet-casio est un bon site Wink

Pour ets remarques les return c'est pour moi mais c'est vrai que l'on peut les enlever Wink
Et pour la boucle de la fin c'est encore une mauvaise habitude Smiley mais on peut aussi l'enlever
Journalisée
Matronix Hors ligne
Jr. Member
**
Messages: 56


Voir le profil WWW
« Réponse #14 : 17 Mai 2008, 16:07:05 »

Bin aussi les Goto/lbl sont très lents, donc à éviter au maximum...

Planete-casio n'est pas un bon site, c'est le meilleur xD

t'es inscrit dessus ?

En tout cas, le débutant de la prog casio retrouve ses amrques de la prog casio (4 ans quand même Azn)
Journalisée
Pages: [1] 2 3   Haut de page
Imprimer

Aller à: