π
<-

Trigonométrie/Rotation avec nombres entiers, meilleur moyen?

Assembleur, Axe, C/C++, ICE...

Trigonométrie/Rotation avec nombres entiers, meilleur moyen?

Unread postby Pseudopourri » 01 May 2020, 08:04

Salut tout le monde,

Alors je suis au début d'un projet sur TI 83 PCE (que je terminerais sûrement pas d’ailleurs), qui est d'afficher des vertex (sans texture) en assembleur, forcement j'ai pas de nombre à virgule (y'a bien une librarie mais ça à l'air trop lent) donc je compte utiliser des entiers (24bit du coup) pour chaque coordonnées, sauf que pour les rotations (par rapport à la camera, donc 0;0;0), bon déjà j'ai trouvé une vidéo de 3Blue1Brown (juste pour info je ne compte pas utiliser des quaternions) où il me semble possible de transformer son truc avec les nombres imaginaires en code (et surtout ça à l'air d’être assez rapide), sinon la seul autre façon que vois de faire la rotation d'un point c'est avec des coordonnées polaires, donc je devrais utiliser une racine carrée et un cosinus/sinus inverse donc c'est mort (trop lent), mais le problème c'est que je ne pas multiplier par un nombre à virgule entre 0 et 1.

Donc j'ai penser, à utiliser un table de nombre pré-calculé par ce que je sais pas comment écrire une fonction trigonométrique sinon (et plus une table doit être plus rapide aussi) de chiffre entre -128 & 127 (-128 étant l’équivalent d'un -1.0, et 127 étant 1.0), puis je multiplie ma coordonnée 24bit par 127 (enfin je shift de 7 bit et donc multiplie par 128) et puis je divise par mon chiffre de -128 à 127 que m'a donnée ma fonction trigonométrique par ma coordonnée.
Je peux aussi faire un truc pour régler l'imprécision du shift qui multiplie par 128 et faut que je sauvegarde le signe et le restaure après le shift, et ça devrais marcher, sauf que:
-vu que je shift mon entiers 24bit de 7 bit vers la gauche et ben du coup c'est un entier 17 bit en pratique donc je perd en précision
-ça fait juste 256 angles différent de rotation pour un table de 128 octets (par ce que cos(90°)=cos(270°), cos(135°)=cos(315°), etc...)
-les divisions entières avec des restes, et un chiffre entre -128 & 127 comme sorti d'une fonction de trigo, ça m'as pas l'air hyper précis.

Donc voila je voulais savoir si il y avais pas un meilleur moyen de faire des rotations avec des entiers (déjà si ma méthode fonctionne, j'arrive plus à réfléchir...), j'ai aussi regarder vite fait dans le code source de virtual3d mais j'y comprend rien.
User avatar
Pseudopourri
Niveau 1: MD (Membre Débutant)
Niveau 1: MD (Membre Débutant)
Level up: 20%
 
Posts: 2
Joined: 19 Jun 2019, 02:59
Gender: Not specified
Calculator(s):
MyCalcs profile

Return to Langages alternatifs

Who is online

Users browsing this forum: ClaudeBot [spider] and 5 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
738 utilisateurs:
>702 invités
>30 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)