je dois tracer un cercle avec la methode pset mais je ne connait pas la formule mathematique qui me permet de le faire
je dois tracer un cercle avec la methode pset mais je ne connait pas la formule mathematique qui me permet de le faire
Salut,
Il faut utiliser les fonctions Sinus et Cosinus avec un angle variable de 0 à 2PI, un rayon et un point central. Tu peux tester ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Const PI = 3.141593 Private Sub Form_Click() Dim Angle As Single, X As Single, Y As Single Dim Rayon As Long, CentreX As Long, CentreY As Long Me.ScaleMode = vbPixels Rayon = 90 CentreX = 150 CentreY = 110 Angle = 0 Do While Angle < PI * 2 X = (Cos(Angle) * Rayon) + CentreX Y = (Sin(Angle) * Rayon) + CentreY Me.PSet (X, Y), vbBlue 'Changer d'angle Angle = Angle + 0.05 Loop End Sub
A+
HCath
pour augmenter la précision tu peux aussi faire : PI = 4 * Atn(1)
Tu peux aussi tricher un peu plutot que de faire point par point avec un pas de 0.05, faire deux points espacés et faire un line entre les deux...
L'vantage de la seconde methode étant de pouvoir faire un fill...
Ma page Developpez - Mon Blog Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag
Venez sur le Chat de Développez !
D'ailleurs pour éviter de calculer trop de sinus tu peux faire aller la boucle de 0 à pi/4 et tracer les huit quadrants simultanément.
C'est à dire en reprenant X et Y comme définis dans le post précédent :
(X,Y) (-X,Y) (X,-Y) (-X,-Y) (Y,X) (-Y,X) (Y,-X) (-Y,-X)
Aussi calcule la valeur d'incrément optimal pour l'angle (tel que le déplacement soit d'environ 1 pixel) : approximativement 1/(2*Rayon) si le rayon n'est pas trop petit.
vic
Pour une rapidité MAX on peut aussi travailler avec une table précalculée de valeurs générée dans un fichier.
Le problème est au cas où les paramêtres de tracé changent et puis c'est moins précis.
C'est plutôt utilisé pour les jeux
Salut,
J'ai fait un test de rapidité basé sur 300 cercles.
1 - avec la méthode Circle = moins d'un dixième de seconde
2 - avec Pset = une seconde et trois dixième
3 - avec Pset mais en ne calculant les Sin/Cos que sur un huitiéme de cercle = une seconde et deux dixièmes.
Donc, avantage très net à la méthode Circle. On peut néanmoins trouver intérêt à utiliser Pset si l'on souhaite dessiner le cercle en pointillés.
A+
HCath
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager