SUR QUELLE LIGNE CLIQUE-JE ?

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 8 sept. 2004 à 23:28
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 - 1 nov. 2004 à 08:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/25973-sur-quelle-ligne-clique-je

cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
1 nov. 2004 à 08:34
Salut,
C'est vrai que dans ton type d'application, c'est une fonction indispensable !
Ton calcul est certainement plus précis que le mien, c'est un vrai calcul de distance alors que j'ai simplifié la recherche de mini pour éviter les racines carrées (calcul plus rapide).
Et bravo pour le courage ! S'attaquer à un éditeur de PCB, j'aurais pas osé.

Kén@vo
cs_ZED Messages postés 57 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 16 décembre 2005
1 nov. 2004 à 05:50
Merci d'avoir expliqué ^^

// Extrait de mon PCB Layout Editor...

function TWire.ContainPoint(P: TPoint): Boolean;
var
A, B: TPoint;
U, V, W, Dist, D: Double;
begin
A := Board.GridToPixel(StartPoint);
B := Board.GridToPixel(EndPoint);
D := Board.Increment * PCBSteps[Board.FGridStep] div (2 * WidthScale);
if D = 0 then
D := 1;
U := A.Y - B.Y;
V := B.X - A.X;
W := -A.X * (A.Y - B.Y) - A.Y * (B.X - A.X);
Dist := Abs(U * P.X + V * P.Y + W) / Sqrt(Sqr(U) + Sqr(V));
Result := (Dist < D) and (P.X >= Min(A.X, B.X) - D) and
(P.X <= Max(A.X, B.X) + D) and (P.Y >= Min(A.Y, B.Y) - D) and
(P.Y <= Max(A.Y, B.Y) + D);
end;

Avoue que c'est tres ressemblant ;-)
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
8 sept. 2004 à 23:28
Ah comme il devient plaisant de réviser la géométrie en compagnie de Kenavo.
C'est très bien fait, je crois que j'ai même réussi à comprendre vu que c'est tellement bien expliqué. ;o]
Rejoignez-nous