π
<-
Chat plein-écran
[^]

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

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

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

Message non lude Pseudopourri » 01 Mai 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.
Avatar de l’utilisateur
Pseudopourri
Niveau 1: MD (Membre Débutant)
Niveau 1: MD (Membre Débutant)
Prochain niv.: 20%
 
Messages: 2
Inscription: 19 Juin 2019, 02:59
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
866 utilisateurs:
>818 invités
>43 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)