Points d'accroche d'un arc de cercle (canvas.arc)

Résolu
cs_orelien Messages postés 137 Date d'inscription dimanche 7 juillet 2002 Statut Membre Dernière intervention 11 janvier 2009 - 8 mars 2006 à 18:21
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Derniè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.


Quelqu'un peut-il m'aider ?


Merci
Orélien.

1 réponse

cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
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 !

Ken@vo
<hr size ="2" width="100%">Code, Code, Codec !

[%3C/body ]
3
Rejoignez-nous