cs_orelien
Messages postés137Date d'inscriptiondimanche 7 juillet 2002StatutMembreDernière intervention11 janvier 2009
-
8 mars 2006 à 18:21
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 2009
-
9 mars 2006 à 10:09
Bonjour,
J'utilise la fonction canvas.arc pour dessiner une partie de cercle, et j'aimarais connaître les points de début et de fin de cet arc.
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 9 mars 2006 à 10:09
Salut Orelien
Ca tient plus de la géométrie que de Delphi !!!
Si tu notes X0 et Y0 les coordonnées du centre du cercle, R le rayon et X et Y les coordonnées du point que tu cherches, tu peux écrire :
- (X-X0)²+(Y-Y0)² = R² (point sur le cercle)
- (X-X0)x(Y3-Y0) = (Y-Y0)x(X3-X0) (point sur la droite qui passe par (X0,Y0) et (X3,Y3) )
Et avec tout ça tu trouves ta solution !
Et comme je suis dans un bon jour, je te continue ! Je passe quand même sur la partie mathématique, faut pas exagérer ....
Pour le premier point ça peut donner (solution générale) :
var
X1,X2,X3,X4,Y1,Y2,Y3,Y4,X,Y : Integer;
X0,Y0, R,A : Real;
begin ....
X0: = (X1+X2) / 2; // Centre Y0:= (Y1+Y2) / 2;
R := Abs(X2-X1) div 2; // Rayon
....
A : = (Y3-Y0)/(X3-X0); // pente du rayon définissant le point de départ
X:= round(R /sqrt(1+sqr(A)) + X0);
if X3<X0 then // sur un diamètre il y a deux points il faut choisir le bon
X: = round(2*X0-X);
Y:= round( (X-X0)*A + Y0);
....
end ;
et le second point en remplaçant X3 et Y3 par X4 et Y4
A toi de faire gaffe aux cas particuliers donnant une belle erreur pour division par zéro !