tracer un cercle avec la methode pset - VB/VBA/VBS - Programmation
Marsh Posté le 09-12-2002 à 10:32:40
c'est pas génial mais c'est tout ce que j'ai sur moi (je suis pas spécialiste en math donc j'oserais même pas modifier le code). 
 
|   | 
 
 
X, Y, Z, A, B sont déclarés As Single
Marsh Posté le 09-12-2002 à 11:26:49
On peut modifier la formule drasche en 
 
X0 = la valeur qu'on veut pour le X du centre 
ici X0% = 160 
 
Y0% la valeur qu'on veut pour Y du centre 
Y0% = 85 ici 
 
Ray% = rayon, 50 ici 
 
For X% = X0% - Ray% To X0% + Ray% 
    A = Abs(X% - X0%) / Ray% 
    Y = Sqr(1 - A * A) * Ray% 
    PSet (X%, Y0% + Y), vbBlack 
    PSet (X%, Y0% - Y), vbBlack 
Next X% 
 
Cette méthode a pour intérêt de ne calculer la racine carrée qu'une fois pour deux points (symétrie par rapport à axe des Y et aussi des X  ).
). 
Ca gagne en temps de calcul. 
 
A vérifier, tester, on peut aussi ne calculer qu'un arc de 90° 
 
For X% = X0% - Ray% To X0% 
    A% = Abs(X% - X0%) / Ray% 
    Y% = Sqr(1 - A% * A%) * Ray% 
    ' point gauche en haut  
    PSet (X%, Y0% + Y%), vbBlack 
    ' point gauche en bas 
    PSet (X%, Y0% - Y%), vbBlack 
    ' point à droite en haut 
    PSet (2 * X0% - X%, Y0% + Y%), vbBlack 
    ' point à droite en bas 
    PSet (2 * X0% - X%, Y0% - Y%), vbBlack 
Next X%
Marsh Posté le 09-12-2002 à 12:13:35
Le sqr() est bon ? Habituellement, on utilise plutôt sin().. 
sqr(0) = sin(0°) = 0 
sqr(1) = sin(90°) = 1 
sqr(0,5) = sin(45°) = 0,707 
mais à part ça. Le développement limité de sin() et sqr(), je sais plus (ça fait bientôt 30 ans que j'utilise plus).
Marsh Posté le 10-12-2002 à 14:42:38
Finalement, vu qu'il n'y a pas de matheux dans la salle, en réfléchissant (:sleep , l'équation des points d'un cercle, c'est bien x^2 + y^2 = constante ?
, l'équation des points d'un cercle, c'est bien x^2 + y^2 = constante ?  
 
Le besoin de calcul de la racine carrée devient alors "limpide". 
 
Solilotons.  
 
Marsh Posté le 08-12-2002 à 22:16:14
je chrche a tracer un cercle avec pset mais je ne connais pas la formule pour le tracer