Forum Le CBNA

Le Forum du CBNA a pour but de vous aider dans l'utilisation de GameMaker. Premier forum Francophone sous GameMaker, vous trouverez des .gmd, .gm6, .gmk, scripts, logiciels et d'autres ressources sur Le CBNA.
 
AccueilAccueil  ­FAQFAQ  ­RechercherRechercher  ­S'enregistrerS'enregistrer  ­MembresMembres  ­ConnexionConnexion  
Poster un nouveau sujet   Répondre au sujetPartager | 
 

 Source des fonctions trigonométriques Cos, Sin et Tan

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
onilink_
Utilisateur moyen


Nombre de messages: 63
Localisation: Le vigan (Pres de Ganges)
Projet Actuel: Convertisseur : Projet .gm6 >> Projet C++ SDL + FMOD
Avancement:
10 / 10010 / 100


MessageSujet: Source des fonctions trigonométriques Cos, Sin et Tan   Sam 7 Nov - 16:12

Attention la lecture de cette page peut causer des maux de tête rire .

Ne s'adresse qu'aux personnes curieuses qui veulent voir la source de sin, cos et tan.
N'utilisez pas cette fonction dans un jeu elle est juste la pour vous montrer le la complexité qui se cache derrière sin et cos.

Cos :
Code:

var x_,r,m,s;

x_= abs(argument0)
r = 1
m = 10
s = 1

x_ = x_ mod (2*pi)

if (x_ == pi)  { return-1; exit; }
if (x_ ==  0)  { return 1; exit; }

if ( x_== floor( (1*pi/2)*power(10,8) )/power(10,8) )
{ return 0; exit; }
if ( x_== floor( (3*pi/2)*power(10,8) )/power(10,8) )
{ return 0; exit; }

if (x_ > pi)
{
x_ = pi-x_
s  = -1
}

for(n=1;n<=m;n+=1)
{
  r += ( power(-1,n)*power(x_,2*n) ) / s_factoriel(2*n)
}

return r*s


Sin
Code:

var x_,r,m,s;

x_= argument0
r = 0
m = 10
s = 1

x_ = x_ mod (2*pi)

if (x_==pi)  { return 0; exit; }
if (x_== 0)  { return 0; exit; }

if ( x_== floor( (1*pi/2)*power(10,8) )/power(10,8) )
{ return 1; exit; }
if ( x_== floor( (3*pi/2)*power(10,8) )/power(10,8) )
{ return-1; exit; }

if (x_ > pi)
{
x_ = pi-x_
}

for(n=0;n<=m;n+=1)
{
  r += ( power(-1,n)*power(x_,2*n+1) ) / s_factoriel(2*n+1)
}

return r


s_factoriel
Code:

var x_,r;

x_= argument0
r = 1

for(i=1 ; i<=x_ ; i+=1)
{
  r*=i
}

return r


Tan
Code:

return Sin(argument0)/Cos(argument0)


Voila en faite je me suis emmerdé a reprogrammer les fonctions trigonométriques donc je voulais partager mon travail avec vous.
p_bye
Revenir en haut Aller en bas
M@d_Doc
- Modérateur -


Nombre de messages: 5054
Localisation: 47°44'8.04
Projet Actuel: LightED (fini)
Avancement:
100 / 100100 / 100


MessageSujet: Re: Source des fonctions trigonométriques Cos, Sin et Tan   Sam 7 Nov - 19:25

J'ai pas regardé en détail... c'est une approximation par dichotomie?
En tout cas, bien joué, c'est intéressant, je vais le refaire en asm, tiens noel

_________________
Revenir en haut Aller en bas
http://www.lecbna.org
onilink_
Utilisateur moyen


Nombre de messages: 63
Localisation: Le vigan (Pres de Ganges)
Projet Actuel: Convertisseur : Projet .gm6 >> Projet C++ SDL + FMOD
Avancement:
10 / 10010 / 100


MessageSujet: Re: Source des fonctions trigonométriques Cos, Sin et Tan   Sam 7 Nov - 20:09

rire
En fait j'ai utilisé les formules de wikipédia ^^.
Google est notre ami oui !

cos(x) = x - (x^2)/2! + (x^4)/4! + ... + (-1)^k * x^2k/2k!
sin(x) = x - (x^3)/3! + (x^5)/5! + ... + (-1)^k * x^(2k+1)/(2k+1)!

Voila fallait le traduire en GML sourire
Revenir en haut Aller en bas
 

Source des fonctions trigonométriques Cos, Sin et Tan

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Programmation :: Scripts GML-
Poster un nouveau sujet   Répondre au sujet