Invcos, invsin & detectepointofcercle: précis

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 413 fois - Téléchargée 68 fois

Contenu du snippet

InvCos donne la valeur d'un angles à partir de son cosinus.

InvSin donne la valeur d'un angles à partir de son sinus.

DetectePointOfCercle donne l'absisse d'un point d'un cercle à partir de son ordonné, ou l'inverse.

Source / Exemple :


Function InvCos(ValueCos As Double)
If ValueCos = 0 Then
InvCos = 90
Else
Dim Pi, ValueSin, ValueTan, Result
Pi = (4 * Atn(1))
ValueSin = Sqr(1 - ((ValueCos) ^ 2))
ValueTan = ValueSin / ValueCos
Result = Atn(ValueTan) * (180 / (4 * Atn(1)))
If Result < 0 Then
InvCos = 180 + Result
Else
InvCos = Result
End If
End If
End Function

Function InvSin(ValueSin As Double)
If ValueSin = 0 Then
InvSin = 0
Else
Dim Pi, ValueCos, ValueTan, Result
Pi = (4 * Atn(1))
ValueCos = Sqr(1 - ((ValueSin) ^ 2))
ValueTan = ValueSin / ValueCos
Result = Atn(ValueTan) * (180 / (4 * Atn(1)))
If Result < 0 Then
InvSin = 180 + Result
Else
InvSin = Result
End If
End If
End Function

Function DetectePointOfCercle(Rayon, Position, Party)
If Party = 1 Then
DetectePointOfCercle = Rayon - (Rayon * (Sin(InvCos((Rayon - Position) / Rayon) * ((4 * Atn(1)) / 180))))
Else
DetectePointOfCercle = Rayon + (Rayon * (Sin(InvCos((Rayon - Position) / Rayon) * ((4 * Atn(1)) / 180))))
End If
End Function

A voir également

Ajouter un commentaire

Commentaire

Messages postés
25
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
30 août 2004

Tu devrais donner des explications pour cette fonction:
Function DetectePointOfCercle(Rayon, Position, Party)
A quoi correspondent les paramètres ?

Moi, j'ai cherché comment détecter un hit avec un disque pour un jeu que je faisais pour mon petit frère... Ta fonction, c'est la même chose avec un cercle si je comprend bien...

Donc, j'ai cherché environ 30 secondes. J'en suis arrivé à la conclusion suivante: Si un point apparitient à un disque, c'est que la distance entre ce point et le centre du cercle est inférieure ou égale au rayon. Si c'est seulement égal, il apparitient au cercle.

J'ai donc codé ça:
Carre1 = CentreRocherX - PointCoorX
Carre2 = CentreRocherY - PointCoorY
Carre3 = Rayon
Carre1 = Carre1 * Carre1
Carre2 = Carre2 * Carre2
Carre3 = Carre3 * Carre3
If Carre3 >Carre1 + Carre2 Then Boom True

CentreRocherX, CentreRocherY: Coordonnées X et Y du centre du cercle
PointCoorX, PointCoorY: Coordonnées X et Y du point
Rayon: Rayon du cercle

S'il y a des gens que ça intéresse, servez-vous...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.