Graph 3D pour TI 82

Soumis par Shift le

Présentation

[TI 82]
Bavant sur les calculatrices surpuissantes (HP48, TI92,...) de mes camarades de lycée, j'ai décidé de donner
un peu de punch à ma petite TI82 pour qu'elle aille se battre dans la cours des grands ;)
J'ai donc écrit un programme qui lui permet de tracer des courbes en 3D isométrique. Ce programme peut être modifié pour accepter les courbes polaires et/ou paramétriques mais j'ai malheureusement perdu ces programmes et je n'ai plus d'intérêt à les refaire vu que ma TI ne sert plus qu'à faire les comptes :(

Fonctionnalités

- Tracé en 3D isométrique de courbes z(x,y)
- Tracé accéléré en cas de non changement de l'équation
- Représentation des axes et/ou de la boite encadrant le tracé
- ...

Elle ne fait pas les faces cachées malgré le fait que je l'avais implémenté mais que
c'était trop lent :)

Documentation (minimaliste)

Le programme Graph3D se compose de 4 programmes :

  • GRAPH3D ( Le programme principal que l'on doit lancer)
  • AXES (qui trace les axes)
  • BOX (qui trace le cadre du graphique)
  • COORD (qui passe les coordonnées 3d en 2d)

Il tient sur environ 2 Ko et est réalisé en language TI Basic (je ne sais pas programmer en assembleur mais si quelqu'un veut l'adapter, no problemo). Mais attention, il utilise des matrices de taille imposante : Plus vous voulez une bonne définition, plus il faut de la place. De plus vu le nombre réduit de variables sur TI82, je les ai toutes utilisées.

Utilisation

Tout d'abord, il faut désactiver toutes les fonction Y1, Y2,...
Ensuite, il faut lancer GRAPH3D et alors apparait le menu :

Imaginons que vous désiriez tracer le graphe z(x,y)=x*y3-y*x3.
Sélectionnez l'option 1. Vous obtenez la fenêtre suivante que vous remplissez sans oubliez les guillemets :

Remarque : La fonction est stockée dans X1t.

Après validation, vous retournez au menu. Choisissez WINDOW.
Ici vous devez rentrer le cadre du graphique sous forme de liste {xmin,xmax,ymin,ymax,zmin,zmax}comme sur cette image :

Remarque : la liste est stockée dans L6

Ensuite il faut aller régler la définition du graphe : choix 3 du menu principale. Ici 8*8 :

Ensuite il faut régler les angle de vue.
(comme en physique coordonnées polaires avec W=phi) :

Une fois le paramétrage fini, lancez l'option "Trace" du menu. Et dans le menu suivant sélectionnez "Rien" (Les autres options permettent d'ajouter des axes ou un cadre) :

Et voici le graphe obtenu :

Vous pouvez appuyer sur A pour avoir les axes et B pour le cadre(Box) et ENTER pour revenir au menu.

L'option "Retrace" du menu est à utiliser pour un traçage plus rapide si tu n'as pas modifié l'équation et DeltaX DeltaY, sinon il faut utiliser "Trace".

Téléchargement

Télécharger le programme : Graph3D.zip exploitable par Ti-Graph Link (téléchargeable gratuitement sur le site de TI)

Sources

Vu que l'on m'en a fait la demande, voici les sources de ce programme. Si vous trouvez que ça manque de lisibilité et de parenthèse, c'est normal car la TI 82 n'a pas beaucoup de mémoire donc tout caractère en moins est de la place gagné en mémoire :)
La lisibilité est aussi rendue difficile par le fait que la TI-82 ne propose pas suffisamment de variables :(
Voici les 4 programmes à rentrer dans votre calculatrice. Le programme principal est GRAPH3D.

AXES

Ce programme permet de tracer les axes.

:3→dim L₂
:For(A,1,3
:0L₂→L₂:Ans→L₁:L₆(2A→L₂(A
:L₆(2A-1→L₁(A:L₁:prgmCOORD:Ans→L₁
:L₂:prgmCOORD:Line(L₁(1),L₁(2),Ans(1),Ans(2
:End

BOX

Programme permettant de tracer les bords de la zone de traçage.

:{L₆(1),L₆(3),L₆(5)
:prgmCOORD:Ans→L₁
:{L₆(2),L₆(3),L₆(5)
:prgmCOORD:Ans→L₂
:{L₆(1),L₆(4),L₆(5
:prgmCOORD:Ans→L₃
:{L₆(1),L₆(3),L₆(6
:prgmCOORD:Ans→L₄
:{L₆(2),L₆(4),L₆(5
:prgmCOORD:Ans→L₅
:Line(L₁(1),L₁(2),L₄(1),L₄(2)
:Line(L₁(1),L₁(2),L₂(1),L₂(2
:Line(L₁(1),L₁(2),L₃(1),L₃(2
:Line(L₂(1),L₂(2),L₅(1),L₅(2)
:Line(L₃(1),L₃(2),L₅(1),L₅(2
:{L₆(2),L₆(3),L₆(6
:prgmCOORD:Ans→L₁
:Line(L₁(1),L₁(2),L₂(1),L₂(2
:Line(L₁(1),L₁(2),L₄(1),L₄(2)
:{L₆(1),L₆(4),L₆(6
:prgmCOORD:Ans→L₂:Line(L₄(1),L₄(2),L₂(1),L₂(2
:Line(L₂(1),L₂(2),L₃(1),L₃(2
:{L₆(2),L₆(4),L₆(6
:prgmCOORD:Ans→L₃
:Line(L₃(1),L₃(2),L₁(1),L₁(2
:Line(L₃(1),L₃(2),L₂(1),L₂(2
:Line(L₃(1),L₃(2),L₅(1),L₅(2)

COORDS

Programme qui prend en argument (via Ans) de coordonnées X, Y, Z et les transforment en coordonnées 2D pour affichage sur l'écran.

{‒Ans(1)*sin θ°+Ans(2)*cos θ°,‒Ans(1)*cos θ°*sin W°-Ans(2)*sin θ°*sin W°+Ans(3)*cos W°

GRAPH3D

Programme principal.

:Radian
:AxesOff
:Func
:Lbl M
:ClrHome
:ClrDraw
:Menu("MAIN MENU","Z(X,Y)=?",1,"WINDOW",2,"ΔX,ΔY",3,"θ,W",θ,"Trace",4,"ReTrace",U,"Return",6
:
:Lbl 6:Return
:Lbl θ
:Prompt θ,W:If abs W≠90:180/π*tan⁻¹ ((L₆(6)-L₆(5))/(L₆(2)-L₆(1))*tan (W°)→W
:Goto M
:Lbl 1:Input "Z(X,Y)=",X₁т:Goto M
:Lbl 2:Input "{Xmin,Xmax,...=?",L₆
:Goto M
:Lbl 3:Input "ΔX:",M:Input "ΔY:",N:Goto M
:Lbl 4:0→U:0→V
:Menu("OPTION","RIEN",X,"AXES",Y,"BOX",Z,"AXES+BOX",W
:Lbl Z:1→V:Goto X
:Lbl W:1→V:Lbl Y
:1→U:Lbl X
:1+{M,N→dim [A]:[A]→[B]:[A]→[C]:ClrHome
:Output(3,7,"°/°
:For(I,0,M
:For(J,0,N
:Output(3,3,int (100*I/(M+1)+100*J/((M+1)(N+1
:L₆(1)+(L₆(2)-L₆(1))/M*I→[A](I+1,J+1
:Ans→X
:L₆(3)+(L₆(4)-L₆(3))/N*J→[B](I+1,J+1
:Ans→Y
:X₁т→[C](I+1,J+1
:End:End
:Lbl U:‒1e99→Xmax:‒Ans→Xmin:Ans→Ymin
:‒Ans→Ymax:Output(8,14,"°/°
:For(A,1,2
:For(B,3,4
:For(C,5,6
:Output(8,10,int (100*((A-1)/2+(B-3)/4+(C-5)/8
:{L₆(A),L₆(B),L₆(C
:{‒Ans(1)*sin θ°+Ans(2)*cos θ°,‒Ans(1)*cos θ°*sin W°-Ans(2)*sin θ°*sin W°+Ans(3)*cos W°
:Ans→L₅
:min(L₅(1),Xmin→Xmin
:max(L₅(1),Xmax→Xmax
:min(L₅(2),Ymin→Ymin
:max(L₅(2),Ymax→Ymax
:End:End:End
:‒[A]*cos θ°*sin W°-[B]*sin θ°*sin W°+[C]*cos W°→[E]
:‒[A]*sin θ°+[B]*cos θ°→[D]:If U=1:prgmAXES:If Y=1:prgmBOX
:For(I,1,M+1
:For(J,1,N+1
:If I≠M+1
:Line([D](I,J),[E](I,J),[D](I+1,J),[E](I+1,J
:If J≠N+1:Line([D](I,J),[E](I,J),[D](I,J+1),[E](I,J+1)
:End:End
:0→K:getKey
:Lbl F:getKey→K:If K=105:Goto M:If K=41:prgmAXES:If K=42:prgmBOX:Goto F

Anonymous (non vérifié)

mar 14/10/2008 - 20:57

N'aurais-tu pas la source stp? Envoie la si possible a mon e-mail
Merci

Shift

dim 19/10/2008 - 14:19

En réponse à par Anonymous (non vérifié)

Je viens de modifier la page pour ajouter le code source. Ton vœu est exaucé.

Anonymous (non vérifié)

ven 31/10/2008 - 17:20

Bonjours ou trouve-t-on la commande Ans car j'ai beau chercher je la trouve pas ^^

Anonymous (non vérifié)

lun 25/10/2010 - 17:15

Bonjour,

Je viens d'essayer graph 3d sur ma calculatrice ti83plus rom ver 1.19 et Virtual TI ver 1.12.

J'arrive toujours à la même erreur, au niveau de la formule : "{-10,10,-10,10,-5000,5000"
Erreur et goto vers cette formule que j'ai testée avec différente écriture .

Dans l'attente de votre réponse,

J'ai copié les 4 fichiers dans la calculatrice repertoire programs

Cordialement.

Déjà désolé pour la réponse très tardive mais je ne m'occupe pas suffisamment de ce blog.

Grâce à Virtual TI que je ne connaissais pas à l'époque, j'ai pu relire le code que j'ai mis sur cette page par rapport au fichier .82P que j'ai fournis. D'ailleurs Virtual TI fonctionne parfaitement sous Linux avec Wine.

J'avais indiqué L1 au lieu de L5 plusieurs fois dans le programme BOX mais à part ça je n'ai pas trouvé d'erreurs.

Cela dit, ton problème c'est plutôt que tu ajoutes des guillemets " pour saisir les coordonnées du cadre alors qu'il n'en faut pas. C'est une liste qu'il faut saisir, pas un texte. Il faut donc commencer direct par {