Espace TI: Forum
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-46%
Le deal à ne pas rater :
Oceanic OCEAB120W Batteur électrique – Blanc
7.51 € 13.91 €
Voir le deal

[AXE] Problème précision (cos et sin)

4 participants

Aller en bas

[AXE] Problème précision (cos et sin) Empty [AXE] Problème précision (cos et sin)

Message par maxence Dim 20 Oct - 9:57

J'aimerais réaliser un programme permettant d'effectuer des rotation d'un point en 3D autour de l'origine, pour cela j'ai besoin de calculer la nouvelle position du point en fonction de son ancienne, et de l'angle noté P.

Pour l'instant, j'utilise les formules :

x' = cos(P) * x - sin(P) * y
y' = sin(P) * x + cos(P) * y

Avec x et y les anciennes coordonnées et x' et y' les nouvelles coordonnées.

Ces formules marchent, mais en AXE, en raison de la précision trop faible, le résultat attendu n'est pas bon, en particulier à cause des cos et sin.

Comment remedier à cela ?
maxence
maxence
Or 4
Or 4

Sexe : Masculin
Age : 27
Messages : 574
Date d'inscription : 26/02/2012
Etudes : 1ere S SI
Points Forum : 17
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-84+

TI-84+


Revenir en haut Aller en bas

[AXE] Problème précision (cos et sin) Empty Re: [AXE] Problème précision (cos et sin)

Message par linkakro Lun 21 Oct - 13:22

Soit tu créés un nouveau noyau de calcul des sinusoïdes (probablement approche par développement limité grâce à un noyau linéaire) soit tu crées une Look Up Table (table de valeurs précalculée) de plus de 256 valeurs et à valeurs de plus de 2 Bytes.
Je ne vois pas d'autre solution, sauf peut-être utiliser le noyau de TI, ou encore décomposer les sinusoïdes avec la forme sin(a+b)=sinacosb+sinbcosa et une table partielle.

Cependant l'emplacement du signe négatif ne respecte pas l'orientation directe de la physique trigonométrique, donc j'espère que tu compenses avec le reste des conventions. (probablement le sens horaire)
mémo:
linkakro
linkakro
Or 4
Or 4

Sexe : Masculin
Age : 30
Messages : 768
Date d'inscription : 01/07/2010
Etudes : dut geii (elec/info)
Points Forum : 51
Points Concours : 8
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-84 Pocket.fr

TI-84+ SE


Revenir en haut Aller en bas

[AXE] Problème précision (cos et sin) Empty Re: [AXE] Problème précision (cos et sin)

Message par maxence Lun 21 Oct - 15:40

En fait, l'avantage des formules que j'utilise, c'est qu'elle calculent la nouvelle position du point en fonction d'un angle et de son ancienne position, pas par rapport à la position initiale, je m'explique :

J'ai x = 10 et y = 0
J'applique la formule pour un angle de 45°
j'obtient x' = sqrt(2)/2 et y' = x'
Je rapplique pour un angle de 45°
j'obtient x'' = 0 et y'' = 10

Donc la table pré calculée ne marche pas (je pense), mais je vais quand même tester. Pour ce qui est de recréer un pseudo-fonction cos et sin, je ne connais pas les calculs à effectuer mais ça a l'air pas mal, peux-tu m'en dire d'avantage ?
maxence
maxence
Or 4
Or 4

Sexe : Masculin
Age : 27
Messages : 574
Date d'inscription : 26/02/2012
Etudes : 1ere S SI
Points Forum : 17
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-84+

TI-84+


Revenir en haut Aller en bas

[AXE] Problème précision (cos et sin) Empty Re: [AXE] Problème précision (cos et sin)

Message par linkakro Lun 21 Oct - 22:13

Il me semble que les programmes d'espace de matrefeytontias et autres experts sont assez précis...

Je ne sous-entendais pas de précalculer les coordonnées, mais de précalculer les cosinus et sinus.

Rappelle moi la capacité d'Axe. Je crois 1 octet d'entrée angle et deux octets de sortie sinus.
Si c'est bien ça tu peux déjà chercher à utiliser deux octets d'entrée.

Les tables sont quand même intéressantes...
EDIT: je veux dire que c'est facile et rapide

Les calculs ne sont pas évidents. C'est même souvent casse-tête. (EDIT: et c'est lent)
Je sais que des calculatrices utilisent des dévellopement limités cependant, et c'est probablement la meilleure piste excepté les tables.
par développement limité:
par décomposition des sinosoïdes de sommes:


Dernière édition par linkakro le Mar 22 Oct - 16:42, édité 1 fois
linkakro
linkakro
Or 4
Or 4

Sexe : Masculin
Age : 30
Messages : 768
Date d'inscription : 01/07/2010
Etudes : dut geii (elec/info)
Points Forum : 51
Points Concours : 8
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-84 Pocket.fr

TI-84+ SE


Revenir en haut Aller en bas

[AXE] Problème précision (cos et sin) Empty Re: [AXE] Problème précision (cos et sin)

Message par matrefeytontias Mar 22 Oct - 9:39

Vous vous embêtez vraiment pour pas grand-chose. Pas question de refaire les fonctions trigo, la vitesse prendrait bien trop cher. La méthode que j'utilise systématiquement est celle de la LUT.
Le truc dont il faut se rappeler est que les cos et sin de l'Axe sont mappés sur [-128,127], et qu'il faut diviser par 128 le résultat de tout calcul impliquant la trigo. Le code le plus optimisé que j'ai pu écrire qui corrige l'imprécision cos(0) = 127 au lieu de 128 est :
Code:
:E90D3->°CosLUT
:Return!If GetCalc("appvTrig",256)
:->CosLUT
:~1
:For(256)
:Select(+1,cos(->r1)->{r1+CosLUT})
:End

...

:Lbl Sin
:-64
:Lbl Cos
:^256??128,sign{+CosLUT}
Avec ça, appelle les fonctions Cos() et Sin() au lieu des tokens cos() et sin(), en prenant en compte le fait que r1 soit détruit. Encore une fois, oublie pas de tout diviser par 128 après tous les calculs.
matrefeytontias
matrefeytontias
Platinum 1
Platinum 1

Sexe : Masculin
Age : 26
Messages : 1383
Date d'inscription : 28/09/2011
Etudes : 1ère S SI
Points Forum : 90
Points Concours : 7
Langages :
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - Lua Nspire
  • - Ndless Nspire
Calculatrices :
  • - TI-83+.fr
  • - TI-Nspire CAS

TI-83+.fr


Revenir en haut Aller en bas

[AXE] Problème précision (cos et sin) Empty Re: [AXE] Problème précision (cos et sin)

Message par maxence Mar 22 Oct - 9:57

Merci pour vos réponses, je vais essayer de faire avec.

Le problème pour l'instant, c'est que lorsque j'augmente l'angle, le cos réduit bien la largeur initiale alors que le sin n'augmente pas la hauteur, car le résultat divisé par 128 vaut 0 (D * sin(angle) // 128 = 0), donc ça me donne juste un trait qui rétréci de plus en plus.

Sinon, c'est possible de récupérer le code source du programme AXECUBE qui est donné de base avec l'axe ?
maxence
maxence
Or 4
Or 4

Sexe : Masculin
Age : 27
Messages : 574
Date d'inscription : 26/02/2012
Etudes : 1ere S SI
Points Forum : 17
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-84+

TI-84+


Revenir en haut Aller en bas

[AXE] Problème précision (cos et sin) Empty Re: [AXE] Problème précision (cos et sin)

Message par matrefeytontias Mar 22 Oct - 10:58

Montre-moi le calcul des coordonnées pour voir ?
matrefeytontias
matrefeytontias
Platinum 1
Platinum 1

Sexe : Masculin
Age : 26
Messages : 1383
Date d'inscription : 28/09/2011
Etudes : 1ère S SI
Points Forum : 90
Points Concours : 7
Langages :
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - Lua Nspire
  • - Ndless Nspire
Calculatrices :
  • - TI-83+.fr
  • - TI-Nspire CAS

TI-83+.fr


Revenir en haut Aller en bas

[AXE] Problème précision (cos et sin) Empty Re: [AXE] Problème précision (cos et sin)

Message par maxence Mar 22 Oct - 12:08

Le calcul que j'utilisais était :

x' = cos(angle) * x - (sin(angle) * y) // 128
y' = sin(angle) * x + (cos(angle) * y) // 128

C'était pour faire tourner le point autour de l'axe central.
En fait ce que je voulais faire, c'était utiliser les flèches gauche et droite pour modifier les valeurs x et z du point, et les flèches haut et bas pour modifier les valeurs y et z du point. (en utilisant la formule ci dessus, mais en remplaçant x et y par x et z et par y et z en fonction du mouvement voulu)

Ensuite on convertis les coordonnées 3D vers les coordonnées 2D et on les affiches, sauf que par manque de précision, en utilisant ce calcul comme test pour faire tourner un trait à la manière d'une aiguille, la valeur y ne changeait pas tandis que la valeur x elle était modifiée correctement.

J'ai commencé à lire le tuto "3D tutorial" sur Ti-cacl, je pense que je vais utiliser ces méthodes finalement, mais je me demande si il n'y a pas quelques erreurs quand même :

ScreenPt.x = screen_mid.x + (const * pt.x) / pt.z

Déjà, si pt.z = 0, on se retrouve avec un résultat improbable :/
et c'est tout à fait possible que le point se trouve à une profondeur de 0.
Ensuite, ça signifie que un point situé à x = -10 et z = -10 se trouve sur l'écran au même endroit qu'un point situé à x = 10 et z = 10.

Ou alors j'ai mal compris, mais je ne vois pas trop comment cela peut marcher :/
maxence
maxence
Or 4
Or 4

Sexe : Masculin
Age : 27
Messages : 574
Date d'inscription : 26/02/2012
Etudes : 1ere S SI
Points Forum : 17
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-84+

TI-84+


Revenir en haut Aller en bas

[AXE] Problème précision (cos et sin) Empty Re: [AXE] Problème précision (cos et sin)

Message par matrefeytontias Mar 22 Oct - 12:17

Moi je te demande comment tu l'as implémenté. Le calcul je le connais, merci.

Et oui, la formule est la bonne. Ça s'appelle la projection orthogonale, soit qui est influencée par la profondeur. Il faut remplacer pt.z par 1 s'il est nul (mais la division de l'Axe fait que ça marche quand même) et je te rappelle qu'un point avec un Z négatif est derrière toi, donc invisible. De plus, si ton point est centré sur l'origine, il faut ajouter un offset de distance à Z (par exemple 150) pour avoir du recul par rapport à la scène et effectivement voir le point autour de l'origine (sinon l'origine c'est toi, et il y a un risque que le point passe derrière toi).
matrefeytontias
matrefeytontias
Platinum 1
Platinum 1

Sexe : Masculin
Age : 26
Messages : 1383
Date d'inscription : 28/09/2011
Etudes : 1ère S SI
Points Forum : 90
Points Concours : 7
Langages :
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - Lua Nspire
  • - Ndless Nspire
Calculatrices :
  • - TI-83+.fr
  • - TI-Nspire CAS

TI-83+.fr


Revenir en haut Aller en bas

[AXE] Problème précision (cos et sin) Empty Re: [AXE] Problème précision (cos et sin)

Message par maxence Mar 22 Oct - 14:23

Tampis pour le calcul, de toute façon ça ne marche pas.

Un Z négatif signifie normalement que le point se trouve devant moi, puisque si on a X qui part du milieu vers la droite et Y qui part du milieu vers le haut, alors Z part du milieu vers nous dans les positifs, et vers le fond dans les négatifs...

Je vais finir de lire le tuto, tester, et donner mes problèmes (si j'en ai, je n'espère pas Content) une fois ces étapes passées Clin Oeil
maxence
maxence
Or 4
Or 4

Sexe : Masculin
Age : 27
Messages : 574
Date d'inscription : 26/02/2012
Etudes : 1ere S SI
Points Forum : 17
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-84+

TI-84+


Revenir en haut Aller en bas

[AXE] Problème précision (cos et sin) Empty Re: [AXE] Problème précision (cos et sin)

Message par linkakro Mar 22 Oct - 16:53

Va pour la table, moi je cherchais juste à donner des pistes.
Je suis d'accord avec la considération de rapidité et simplicité.

Pourquoi traiter des valeurs qu'on doit diviser ensuite ? Et idem pour le signe ? Je pense plus simple de définir le repère qui correspond aux valeurs binaires...
(là c'est moi qui ai besoin d'un cours d'Axe, goto tuto)
linkakro
linkakro
Or 4
Or 4

Sexe : Masculin
Age : 30
Messages : 768
Date d'inscription : 01/07/2010
Etudes : dut geii (elec/info)
Points Forum : 51
Points Concours : 8
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-84 Pocket.fr

TI-84+ SE


Revenir en haut Aller en bas

[AXE] Problème précision (cos et sin) Empty Re: [AXE] Problème précision (cos et sin)

Message par matrefeytontias Mar 22 Oct - 17:32

Parce que ce sont les valeurs binaires. Je te rappelle qu'on a pas de nombres à virgule en Axe.
matrefeytontias
matrefeytontias
Platinum 1
Platinum 1

Sexe : Masculin
Age : 26
Messages : 1383
Date d'inscription : 28/09/2011
Etudes : 1ère S SI
Points Forum : 90
Points Concours : 7
Langages :
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - Lua Nspire
  • - Ndless Nspire
Calculatrices :
  • - TI-83+.fr
  • - TI-Nspire CAS

TI-83+.fr


Revenir en haut Aller en bas

[AXE] Problème précision (cos et sin) Empty Re: [AXE] Problème précision (cos et sin)

Message par nikitouzz Jeu 31 Oct - 21:38

Le code de axecube maxence n'utilise pas du tout les 3D juste des hyperbole...
nikitouzz
nikitouzz
Platinum 1
Platinum 1

Sexe : Masculin
Age : 28
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :
  • - TI-Basic Z80
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - TI-Basic 68K
  • - TI-Basic Nspire
Calculatrices :
  • - TI-73
  • - TI-76.fr
  • - TI-82 Stats.fr
  • - TI-83+
  • - TI-84+
  • - TI-92
  • - TI-Nspire
  • - TI-Nspire CX

TI-84+ SE


Revenir en haut Aller en bas

[AXE] Problème précision (cos et sin) Empty Re: [AXE] Problème précision (cos et sin)

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum