Jump to content

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


RaZ

Recommended Posts

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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...