Bonjour,
Mon problème est assez inhabituel, je sais, mais je n'ai rien trouvé sur internet donc j'ai besoin de votre aide.
J'ai un vecteur 3D défini donc sur 3 variables, et je voudrais obtenir l'orientation correspondant a ce vecteur (Sur 2 axes, horizontal et vertical). D'apres les cours d'un ami,
θ=arccos(z/pi)
ϕ=arctan(y/x)
θ étant l'orientation verticale et ϕ l'horizontale.
Mais c'est la que ça se complique. Je veux faire ça sur ordinateur, je ne peux donc pas simplement écrire arccos() et arctan(), il me faut des approximations. De plus, je dispose de peu de puissance de calcul, donc il faut une approximation qui demande peu d'opérations.
L'autre problème que j'ai remarqué, c'est que les approximations que j'ai trouvé pendant mes recherches fonctionnent pour la plupart pour -1<=x<=1 (je me suis concentré sur arctan() pour l'instant). Mais pour calculer ϕ je dois diviser une coordonnée par l'autre, mais si x vaut 0.1 et y 0.8, j'obtiens 8....
Donc je ne peux pas utiliser les approximations qui fonctionnent dans cette intervalle ou bien j'ai simplement raté quelque chose ?
Pour récapituler:
Il me faut des approximations pour arccos() et arctan() qui demandent moins d'une trentaine d'opérations simples (+x-/) chacune et qui ont une précision d'environ 1 degré minimum, et il faut que je puisse les utiliser pour obtenir l'orientation de mon vecteur.
Merci d'avance pour vos réponses !
Je me permet de réexpliquer pour être plus clair (je ne trouve pas ça très compréhensible alors que je suis avec toi sur ce problème :p )
Concrètement, le problème se situe sur un jeu (Minecraft) permettant de faire des calculs basiques (addition, soustraction, multiplication et divisions) et de stocker des nombres naturels uniquement.
Nous avons déjà fait un système permettant de créer un vecteur V(x,y,z) à partir de l'orientation du joueur (Phi et Theta)
(sur un espace tridimensionnel, Y étant l'axe verticale car les développeurs du jeu l'ont décidé ainsi)
Ce système à utilisé les approximations de Bhaskara* afin de résoudre le système suivant:
x=rsin(θ)cos(ϕ)
y=rsin(θ)sin(ϕ)
z=z*cos(θ)
Désormais, le challenge est de recréer une orientation à partir d'un vecteur V(x,y,z). Cette orientation est normalement obtenu grâce au système:
θ=Arccos(z/Π)
ϕ=Arctan(y/x)
Le but est donc de trouver un a algorithme permettant de réaliser la fonction arctan() et arcos(). Pour cela, il nous faut une sorte d'approximation de ces fonctions. La série de Taylor de ces fonctions est une bonne solution mais trop gourmande en ressource si l'on veut être précis.
*Approximations de Bhaskara:
sin(p) ~= (4 * p * (180 - p)) / (40500 - p * (180 - p))
cos(p) ~= (32400 - 4 * p^2) / (32400 + p^2)
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :