Einzelnen Beitrag anzeigen

Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Schnittpunkt Linie vs. Kreis

  Alt 3. Mai 2009, 12:46
Naja, bei einer senkrechten Gerade/Strecke ist der Fall doch trivial.
Es sei eine Strecke/Gerade [P1P2]/P1P2 gegeben durch die Punkte P1(x1|y1), P2(x2,y2) und ein Kreis k(M,r) mit dem Mittelpunkt M(xm,ym). Es gelte x1=x2.

Delphi-Quellcode:
dx := x1-xm;
disc := r*r-dx*dx;
if disc > 0 then
begin
  setlength(result, 2);
  result[0].X := x1;
  result[0].Y := ym + sqrt(disc);
  result[1].X := x1;
  result[2].Y := ym - sqrt(disc);
end
else if disc = 0 then
begin
  setlength(result, 1);
  result[0].X := x1;
  result[0].Y := ym;
end;
Die Schnittpunkte werden in result zurückgegeben.

(Bei einer Strecke muss man noch überprüfen, ob die gefundenen Schnittpunkte auch wirklich zwischen P1 und P2 liegen, da reicht die Überprüfung ((resultY <= y1) and (resultY >=y2)) or ((resultY >= <1) and (resultY <= y2)) )


Ich habe bisher alle Probleme dieser Art (z.B. Billardsimulation, Dreiecksaufgabe beim BWINF) so gelöst (Betrachtung als Funktion für x1!=x2, ansonsten Sonderfallbehandlung als senkrechte Gerade) und es funktioniert prima.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat