Problème VB instruction trigo ???

Le
LE TROLL
Bonjour,

Y a un truc que je ne trouve pas là, peut être
une fonction qui existe, ou une formule ?

En effet, pour positionner un point sur un cercle
imaginaire, on fait:

(ar=angle_radian, ag=angle_grade, p=point,
cÎntre, x=colonne, y=ligne, r=rayon)

ar = ag / 180 * 3.14
sinus = Sin(ar)
cosinus = Cos(ar)
px = r * cosinus + cx
py = cy - r * sinus
point(px, py)

MAIS
quand il s'agit d'une ellipse, d'un pas connu,
"0.5" soit 1/2 je pense (r2 = r1/2)
Le rayon "r" varie !!!

(ar, r1, r2)
Comment connaître "r" ???
Y a-t-il une fonction VB, ou quelle formule
appliquer, comment ???

--
Merci beaucoup, au revoir et à bientôt :o)

Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Modeste
Le #15367781
Bonsour® Joseph Attila avec ferveur ;o))) vous nous disiez :

En effet, pour positionner un point sur un cercle
imaginaire, on fait:

(ar=angle_radian, ag=angle_grade, p=point,
cÎntre, x=colonne, y=ligne, r=rayon)

ar = ag / 180 * 3.14
sinus = Sin(ar)
cosinus = Cos(ar)
px = r * cosinus + cx
py = cy - r * sinus
point(px, py)

MAIS
quand il s'agit d'une ellipse, d'un pas connu,
"0.5" soit 1/2 je pense (r2 = r1/2)
Le rayon "r" varie !!!



on parle de "pas" pour une spirale !!!

lorsqu'il s'agit d'une ellipse (qui n'est en fait qu'un cercle aplati)
il faut considérer le 1/2 grand axe et le 1/2 petit axe
(on peut raccourcir en parlant alors d'apogée et de perigé)
Paramétrisation cartésienne :
x=apogée *cos(angle)
y=périgée *sin(angle)
--
@+
;o)))
Patrice Henrio
Le #15367771
LE TROLL a écrit :
Bonjour,

Y a un truc que je ne trouve pas là, peut être
une fonction qui existe, ou une formule ?

En effet, pour positionner un point sur un cercle
imaginaire, on fait:

(ar=angle_radian, ag=angle_grade, p=point,
cÎntre, x=colonne, y=ligne, r=rayon)

ar = ag / 180 * 3.14
sinus = Sin(ar)
cosinus = Cos(ar)
px = r * cosinus + cx
py = cy - r * sinus
point(px, py)

MAIS
quand il s'agit d'une ellipse, d'un pas connu,
"0.5" soit 1/2 je pense (r2 = r1/2)
Le rayon "r" varie !!!

(ar, r1, r2)
Comment connaître "r" ???
Y a-t-il une fonction VB, ou quelle formule
appliquer, comment ???



Il s'agit d'angles en degré et non en grade.
Pour des grades, la formule est ar=ag/200 * 3.14

Pour la formule de l'ellipse il faut bien entendu rajouter la
translation par rapport au centre car la formule donnée par Modeste
suppose que l'ellipse soit centrée à l'origine des axes.
Donc
x=cx + a *cos(angle)
y=cy + b * sin(angle)

a est la longueur du demi-axe horizontal
b est la longueur du demi-axe vertical

Dans le cas suggéré, bien que peu explicite, il faut sans doute
comprendre que le demi-axe horizontal vaut r et le demi-axe vertical r/2

donc
x=cx + r *cos(angle)
y=cy + r * sin(angle)/2
Modeste
Le #15367761
Bonsour® Patrice Henrio avec ferveur ;o))) vous nous disiez :

Il s'agit d'angles en degré et non en grade.
Pour des grades, la formule est ar=ag/200 * 3.14



;o)))
il me semble que les fonctions trigo de VB utilisent les radians !!!

AngleRadians=AngleDegres* PI / 180
AngleDegres=AngleRadians* 180 / PI
;o)))
--
--
@+
;o)))
Patrice Henrio
Le #15367751
Modeste a écrit :
Bonsour® Patrice Henrio avec ferveur ;o))) vous nous disiez :

Il s'agit d'angles en degré et non en grade.
Pour des grades, la formule est ar=ag/200 * 3.14



;o)))
il me semble que les fonctions trigo de VB utilisent les radians !!!

AngleRadians=AngleDegres* PI / 180
AngleDegres=AngleRadians* 180 / PI
;o)))


Tout à fait mais notre ami parlait d'angles en grade et la
transformation en radian utilisée concernait les degrés.
100 grades en radians donne PI/2 (1,57 rd) et si on utilise la mauvaise
formule : 1,75 rd.
jean-marc
Le #15367741
"Patrice Henrio" news:%
Modeste a écrit :
Bonsour® Patrice Henrio avec ferveur ;o))) vous nous disiez :





Hello,

Il s'agit d'angles en degré et non en grade.
Pour des grades, la formule est ar=ag/200 * 3.14



;o)))
il me semble que les fonctions trigo de VB utilisent les radians !!!

AngleRadians=AngleDegres* PI / 180
AngleDegres=AngleRadians* 180 / PI
;o)))


Tout à fait mais notre ami parlait d'angles en grade et la transformation
en radian utilisée concernait les degrés.
100 grades en radians donne PI/2 (1,57 rd) et si on utilise la mauvaise
formule : 1,75 rd.



A noter que ce sujet est traité en détail dans
la dernière release de la FAQ.

Voir:

"Comment convertir entre elles les diverses unités trigonométriques (degrés,
grades, radians) ?"
http://faq.vb.free.fr/index.php?question1


Ainsi que:

"Comment réaliser les fonctions trigonométriques non incluses dans Visual
Basic?"
http://faq.vb.free.fr/index.php?question5

Bonne lecture !


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
jean-marc
Le #15367731
"Modeste" news:%
lorsqu'il s'agit d'une ellipse (qui n'est en fait qu'un cercle aplati)
il faut considérer le 1/2 grand axe et le 1/2 petit axe
(on peut raccourcir en parlant alors d'apogée et de perigé)
Paramétrisation cartésienne :
x=apogée *cos(angle)
y=périgée *sin(angle)



Et du coup, on peut faire comme ça :

Private Sub DrawEllipse(p As PictureBox, _
ByVal xc As Single, _
ByVal yc As Single, _
ByVal r1 As Single, _
ByVal r2 As Single)
Dim i As Single
Dim stp As Single
Const PI As Double = 3.141592653

stp = 0.1

p.PSet (xc + r1 * Cos(0 * PI / 180), yc + r2 * Sin(0 * PI / 180))
For i = 0 To 360 Step stp
p.Line -(xc + r1 * Cos(i * PI / 180), yc + r2 * Sin(i * PI / 180))
Next i


End Sub


Et l'appel comme ça :


Private Sub Command1_Click()
Dim r1 As Single, r2 As Single
Dim xc As Single, yc As Single

' centre de la pictureBox
xc = Picture1.Width / 2
yc = Picture1.Height / 2

' on suppose une picture box plus large que haute

' 80% de la largeur
r1 = (Picture1.Width / 2) * 0.8

' moitié de r1
r2 = r1 / 2

Call DrawEllipse(Picture1, xc, yc, r1, r2)

End Sub



--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
LE TROLL
Le #15367721
Bonjour :o)

Oh là là, je me suis trompé !

Je voulais dire "degré". Je reçois des degrés,
et je les passe en radians...

Peux-tu confirmer ta formule, car si je fais
le contraire, ça peut être très mauvais, tu écris:


AngleRADIAN = AngleDEGRE * PI / 180

Peux-tu confirmer ???


--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Modeste" message de news:
%
| Bonsour® Patrice Henrio avec ferveur ;o)))
vous nous disiez :
|
| > Il s'agit d'angles en degré et non en grade.
| > Pour des grades, la formule est ar=ag/200 *
3.14
|
| ;o)))
| il me semble que les fonctions trigo de VB
utilisent les radians !!!
|
| AngleRadians=AngleDegres* PI / 180
| AngleDegres=AngleRadians* 180 / PI
| ;o)))
| --
| --
| @+
| ;o)))
|
|
Modeste
Le #15367711
Bonsour® Patrice Henrio avec ferveur ;o))) vous nous disiez :

Tout à fait mais notre ami parlait d'angles en grade et la
transformation en radian utilisée concernait les degrés.
100 grades en radians donne PI/2 (1,57 rd) et si on utilise la
mauvaise formule : 1,75 rd.



OUPSSS !!!!
en effet j'ai eu une lecture un peu rapide :-((
ar=angle_radian, ag=angle_grade




;o)))




--
--
@+
;o)))
LE TROLL
Le #15367701
Bonjour,

Marche pas, peut être à cause de moi, voici:

r1 = 176
r2 = r1 / 2
Circle (cx, cy), r1, QBColor(14), , , 0.5 ' pour
contrôle 0.5 = 1/2 ???
terre = ou_soleil * 3.14 / 180 ' 355°
sinus = Sin(terre)
cosinus = Cos(terre)
px = r1 * cosinus ' point x
py = r2 * sinus ' point y
Shape2(2).Left = px ' je n'ai pas déduit la
demie largeur et hauteur, détail, après...
Shape2(2).Top = py


' FAUX devrait être en 355° ( au levant = 0),
' et est exorbité en 130° (Est du septentrion)
' mon degré de calcul sinus + cosinus est en
radians (si la formule est bonne ?)

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Modeste" message de news:
%
| Bonsour® Joseph Attila avec ferveur ;o))) vous
nous disiez :
|
| > En effet, pour positionner un point sur un
cercle
| > imaginaire, on fait:
| >
| > (ar=angle_radian, ag=angle_grade, p=point,
| > cÎntre, x=colonne, y=ligne, r=rayon)
| >
| > ar = ag / 180 * 3.14
| > sinus = Sin(ar)
| > cosinus = Cos(ar)
| > px = r * cosinus + cx
| > py = cy - r * sinus
| > point(px, py)
| >
| > MAIS
| > quand il s'agit d'une ellipse, d'un pas connu,
| > "0.5" soit 1/2 je pense (r2 = r1/2)
| > Le rayon "r" varie !!!
|
| on parle de "pas" pour une spirale !!!
|
| lorsqu'il s'agit d'une ellipse (qui n'est en
fait qu'un cercle aplati)
| il faut considérer le 1/2 grand axe et le 1/2
petit axe
| (on peut raccourcir en parlant alors d'apogée et
de perigé)
| Paramétrisation cartésienne :
| x=apogée *cos(angle)
| y=périgée *sin(angle)
| --
| @+
| ;o)))
|
|
Modeste
Le #15367691
Bonsour® Joseph Atilla avec ferveur ;o))) vous nous disiez :

Oh là là, je me suis trompé !


;o)))
comme déja signalé précédement ce ne sera ni la première ni la dernière fois !!!
;o)))

Patrice a bien eu raison d'insister !!!
En effet, pour positionner un point sur un cercle imaginaire, on fait:
(ar=angle_radian, ag=angle_grade, p=point,





;o)))




--
@+
;o)))
Publicité
Poster une réponse
Anonyme