Ce code montre comment :
Appliquer un rotation a un point par l'origine
Calculer une distance entre 2 points
Calculer un angle entre 2 points
Tracer un arc de cercle grâce a pset (je sais il y a une fonction pour ça)
Convertir des degré en radians et vice-versa
si vous voulez + :
Distance entre 2 points quelquonques :
sqrt((x1-x2)^2+(y1-y2)^2)
Angle entre 2 points quelquonques :
vers_degre=180/3.141592
angle=int(atn((y1-y2)/(x1-x2))*vers_degre*1000)/1000
Rotation entre 2 points :
Je vous le laisse comme exercice !!!
(C'est pas trops compliqué inspirez vous de ce qu'il y a ci dessu !)
:-)
Pour ceux qui ne veullent pas faire de copier coller, je met un ZIP !
Attention : c'est en VB3
Source / Exemple :
Sub Graph_MouseMove (Button As Integer, Shift As Integer, x As Single, y As Single)
Rem les deux constentes suivantes permettent de convertir des valeurs en radian ou en degré !
Const vers_radian = 3.141592 / 180
Const vers_degre = 180 / 3.141592
Rem J'efface la zone de dessin
graph.Cls
Rem je trace le rectangle vert
graph.Line (0, 0)-(x, y), QBColor(10), BF
Rem puis les 2 axes
graph.Line (-100, 0)-(100, 0), QBColor(4)
graph.Line (0, -100)-(0, 100), QBColor(4)
Rem enfin je trace la ligne origine==>curseur
graph.Line (0, 0)-(x, y), QBColor(15)
Rem ces 3 formules sont assez simple. j'utilise int(nombre/x)*x ou x est le nombre de chiffres aprè la virgule
Rem je sai une fonction existe pour ça mais bon...
coord = "(" + Str(Int(x * 100) / 100) + ";" + Str(Int(y * 100) / 100) + ")"
dist = Sqr(x ^ 2 + y ^ 2)'pythagore mais on ne voit pas X2 et Y2 car ils valent 0
angle = Int(Atn(y / x) * vers_degre * 1000) / 1000
Rem ici vient le gros du travail (pas pour moi, vu que je connais bien [branche préférée])
If x < 0 Then 'Dans quel quadran somme nous ?
angle = 180 + angle
End If
Rem ce n'est que la taille du "pinceau"
graph.DrawWidth = 3
Rem trçage de l'arc de cercle
For ix = 0 To angle Step .5
graph.PSet (Cos(ix * vers_radian) * dist / 2, Sin(ix * vers_radian) * dist / 2), QBColor(15)
Next
Rem vous savez...
graph.DrawWidth = 2
Rem ça c'est la ligne origine==>curseur qui a subit une rotation de 45 degré
graph.Line (0, 0)-(Cos((angle + 45) * vers_radian) * dist, Sin((angle + 45) * vers_radian) * dist), QBColor(14)
End Sub
Conclusion :
Attention : c'est en VB3
Nouveau : Update vers VB6
Dorénavant je ferai VB3 et VB6 (VB3 est gratuit !)
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.