Bug, ou pas bug???

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Bug, ou pas bug???

Message par Chris »

Sachant que le calcul de la corde d'un arc est égal à 2*r*sin(angle/2), en mettant un angle de 180°, le résultat devrait être égal au diamètre du cercle!

D'autant plus que le calcul de l'arc me donne bien un résultat égal au demi périmètre. :?

Me gourre-je???

Code : Tout sélectionner

D = 100     ; Longueur du Diamètre
R = 50      ; Longueur du Rayon
A = 180     ; Angle

Debug 2 * R * Sin(A/2)

; Resultat = 89.399666360055789   <--- C'est faux??? Ca devrait faire 100 (= le diamètre)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

pis on est en RADIANT la non ?

Code : Tout sélectionner

d = 100     ; Longueur du Diamètre
R = 50      ; Longueur du Rayon
a = 180     ; Angle

Debug 2 * R * Sin(a*(#PI/180)/2) 
la ça marche ! :D

ou bien

Code : Tout sélectionner

Declare.f  radiant(angle.f)

d = 100     ; Longueur du Diamètre
R = 50      ; Longueur du Rayon
a.f = 180     ; Angle
  
Debug 2 * R * Sin(radiant(a.f)/2) 

Procedure.f radiant(angle.f)
  angle.f*#PI/180
  ProcedureReturn  angle.f
EndProcedure
Dernière modification par Backup le dim. 16/sept./2007 15:42, modifié 1 fois.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Non, ça ne va pas. Relis le message de départ.

Edit: Si, ça va. T'as posté en même temps que moi.

Putain, c'est vrai que Pure utilise le radian comme unité :oops:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Chris a écrit :Non, ça ne va pas. Relis le message de départ.

Edit: Si, ça va. T'as posté en même temps que moi.

Putain, c'est vrai que Pure utilise le radian comme unité :oops:
oui je trouve ça galère perso, je préfère les degrés , c'est plus simple :D
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Dobro a écrit :
Chris a écrit :Non, ça ne va pas. Relis le message de départ.

Edit: Si, ça va. T'as posté en même temps que moi.

Putain, c'est vrai que Pure utilise le radian comme unité :oops:
oui je trouve ça galère perso, je préfère les degrés , c'est plus simple :D
C'est pas plus simple. C'est juste qu'on a été habitué (à tort, peut-être), à mesurer les angles en degrés.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Bon, par contre, il y a un autre truc que je pige pas.

Pourquoi il faut transformer en radians l'angle pour la formule de la longueur de la corde (2 * R * Sin(A/2)), alors que pour le calcul de l'arc, (#PI * R * (A/180)) il ne faut pas?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Chris a écrit :Bon, par contre, il y a un autre truc que je pige pas.

Pourquoi il faut transformer en radians l'angle pour la formule de la longueur de la corde (2 * R * Sin(A/2)), alors que pour le calcul de l'arc, (#PI * R * (A/180)) il ne faut pas?
ha bah si il faut! :)

t'es sur de ta formule de calcul ??
peut etre a tu récuperé une formule qui marche seulement avec les Radiant justement :)

oui confirmation
http://fr.wikipedia.org/wiki/Cercle

ta formule vaut pour un angle en Radiant pas en degres !! :D
sous-tendu par un angle α, exprimé en radians, est égale à α ⋅ r. Ainsi, pour un angle de 2π (un tour complet), le périmètre (la circonférence) du cercle vaut 2πr.

La longueur d'une corde sous-tendue par un angle α est égale à 2⋅r⋅sin(α/2).
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Ben justement.

Dans ce code, l'angle est donné en degrés (180), et le calcul de l'arc (et pas de la corde) me retourne bien la valeur de la moitié du périmètre, ce qui est normal.

Et pourtant, je n'ai pas converti l'angle en radians.

Code : Tout sélectionner

D = 100     ; Longueur du Diamètre
R = 50      ; Longueur du Rayon
A = 180     ; Angle

Debug "Périmètre = " + StrF(#PI * D, 4)
Debug "Demi périmètre = " + StrF((#PI * D)/2, 4)
Debug "Arc de cercle = " + StrF(#PI * R * (A/180), 4)

Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Chris a écrit :Ben justement.

Dans ce code, l'angle est donné en degrés (180),
ne serait ce pas une coincidence ?? t'as testé avec un autre angle ??
90 par exemple...
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Ben oui! Tu penses bien que c'est la première chose que j'ai faite avant de poster.
Et j'ai aussi testé avec 45°, le resultat est toujours correct.

Mais bon. Puisque ça fonctionne, faut pas chercher à comprendre.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Chris a écrit :Ben oui! Tu penses bien que c'est la première chose que j'ai faite avant de poster.
Et j'ai aussi testé avec 45°, le resultat est toujours correct.

Mais bon. Puisque ça fonctionne, faut pas chercher à comprendre.
peut etre un bug de PB :roll: :? :)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Chris a écrit :Ben justement.

Dans ce code, l'angle est donné en degrés (180), et le calcul de l'arc (et pas de la corde) me retourne bien la valeur de la moitié du périmètre, ce qui est normal.

Et pourtant, je n'ai pas converti l'angle en radians.

Code : Tout sélectionner

D = 100     ; Longueur du Diamètre
R = 50      ; Longueur du Rayon
A = 180     ; Angle

Debug "Périmètre = " + StrF(#PI * D, 4)
Debug "Demi périmètre = " + StrF((#PI * D)/2, 4)
Debug "Arc de cercle = " + StrF(#PI * R * (A/180), 4)

La longueur d'un arc c'est A.R , avec A en radian.
Pour l'avoir en Degré tu fais A.R.#PI/180, et là tu retrouves bien ton calcul, avec un angle en degré.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Donc, en fait, la conversion est déjà contenue dans la formule que j'utilise, à l'insu de mon plein gré. :?
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Tu ne t'en rends pas compte, mais tu définis le radian avec ta formule. C'est normal qu'il n'y ait pas besoin de conversion! Regarde la version anglaise (souvent meilleure et plus claire pour les maths) de wiki là dessus : http://en.wikipedia.org/wiki/Radian
Répondre