Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Schnittpunkt zweier Strecken ermitteln

  Alt 4. Okt 2007, 17:25
Zitat von NamenLozer:
Es gibt allerdings eine Division durch 0, wenn die Strecken exakt aufeinander liegen, man sollte diesen Fall also vorher im Programm abfangen.
Das sollte von intersectlines gemanaged werden:
Delphi-Quellcode:
  fdiv := v1.x * u1.y - v1.y * u1.x;
  if Abs(fdix) < 1e-20 then
     result := True;
  else
  begin
    t := -(v0.x * u1.y - v0.y * u1.x - u0.x * u1.y + u0.y * u1.x) / fdiv;
    s := -(v0.x * v1.y - v0.y * v1.x + v1.x * u0.y - v1.y * u0.x) / fdiv;

    v1.multiply(t);
    // Punkt wo sie sich schneiden:
    p := v0.plus(v1);
    if ((t>0) AND (s>0)) AND ((t<1) AND (s<1)) then
    begin
      output := point(round(p.x),round(p.y));
      result := true;
    end;
  end;
Andreas
  Mit Zitat antworten Zitat