Jump to content
Jagware
Sign in to follow this  
RaZ

Génération D'une Table De Sinus Et De Cosinus.

Recommended Posts

RaZ    0

Comment calculer une valeur approchée de cosinus et sinus ? Disons qu'on désire avoir une table de cosinus et sinus par incrément de 1 degré avec une

"précision" n=8192

 

Nous utiliserons pour générer la table de consinus et sinus les formules :

 

cos(a+B)=cos(a)*cos(B)-sin(a)*sin(B)

sin(a+B)=sin(a)*cos(B)+cos(a)*sin(B)

 

ou

 

cos(a-B)=cos(a)*cos(B)+sin(a)*sin(B)

sin(a-B)=sin(a)*cos(B)-cos(a)*sin(B)

 

avec a="l'angle à calculer" et b=1

 

cos_1=cos(1)*8192 et vaut 8190

sin_1=sin(1)*8192 et vaut 143

 

Le meilleur angle pour commencer à calculer et ne pénaliser aucune des deux tables pour le manque de précision aux angles 0, 90, 180 et 270 degrés est a=45.

 

Pour générer les tables aux angles entre 0 et 45 degrés :

 

n=8192
table_cos(45)=5792
table_sin(45)=5792
table_cos(01)=8190
table_sin(01)=0143

pour i allant de 44 à 1

  table_cos(i)=(table_cos(i+1)*table_cos(1)+table_sin(i)*table_sin(1))/n
  table_sin(i)=(table_sin(i+1)*table_cos(1)-table_cos(i)*table_sin(1))/n

fin boucle sur i

table_cos(00)=8192
table_sin(00)=0000

 

Pour le reste, je vous renvois à vos souvenirs de première pour compléter les tables par symétrie :P

 

Une routine asm est disponible sur le site de DHS ici dans la section Misc sources and routines

 

Azrael

Share this post


Link to post
Share on other sites
Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×