Einzelnen Beitrag anzeigen

Benutzerbild von tripleeye
tripleeye

Registriert seit: 13. Apr 2005
Ort: Stralsund
20 Beiträge
 
Delphi 2005 Personal
 
#8

Re: schneidet eine Strecke ein Polygon

  Alt 9. Jun 2005, 20:00
die schnittpunkte berechnest du einfach alle erst. dann nimmst du dir deine problemfälle vor, die ja immer dann auftreten, wenn die strecke einen eckpunkt schneidet (oder auf einer seite beginnt oder endet).
ich denke, man könnte dein Problem lösen, indem man dann jeder Seite des Polygons einen richtwinkel zuordnet. dies kann man z.b. dadurch erreichen, indem man den anstieg m der seite nach (y2-y1)/(x2-x1) berechnet und davon arctan bildet. falls es eine senkrechte seite ist, muss man halt manuell 90° zuweisen. zum ergebnis addiert man 90° oder zieht sie ab, je nachdem in welche richtung die fläche eingeschlossen wird.
nun hatt man eine art richtungsvektor der senkrecht auf der seite steht und in die richtung zeigt, wo die fläche des polygons eingeschlossen wird.
für die strecke macht man genau das gleiche, bis auf den schritt mit den +-90°. wichtig ist, dabei immer m nach (yend-ystart)/(xend-xstart) zu berechnen.
nun hat man 2 winkel. jetzt prüft man: ist [(winkel der strecke) > (winkel der seite)-90°] und [(winkel der strecke) < (winkel der seite)+90°], dann zeigt die strecke in das polygon hinein und du hast einen schnittpunkt. wenn nicht, hast du den gewünschten sonderfall.

falls du das halbwegs logisch findest, könnte ich dir noch skizzen posten, falls es aber unlogisch sein sollte, oder du es so verstehst, spar ich mir die mühe.
Murphys Gesetz:
Wenn etwas schief gehen kann, dann wird es auch schief gehen.
Erste digitale Ableitung:
Murphys Gesetz wird durch Computer optimiert.
  Mit Zitat antworten Zitat