Wie überprüfen Sie für den Schnittpunkt zwischen Liniensegment und ein line-ray, die von einem Punkt in einem Winkel von der horizontalen?
Einem gegebenen Liniensegment, das zwei Punkte (x1,y1) und (x2,y2) ein Punkt P(x,y) und ein Winkel theta. Wie wir finden, wenn das Liniensegment und die line-ray, entspringt aus P in einem Winkel theta von der horizontalen schneidet oder nicht? Wenn Sie sich schneiden, so finden Sie den Schnittpunkt?
InformationsquelleAutor der Frage Paagalpan | 2013-01-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lassen Sie die Beschriftung der Punkte q = (x1y1) und q + s = (x2y2). Daher s = (x2 − x1y2 − y1). Dann das problem sieht wie folgt aus:
Lassen r = (cos θ, sin θ). Dann ist jeder Punkt auf dem Strahl durch p darstellbar ist als p + t r (für einen skalaren parameter 0 ≤ t), und jeder Punkt auf dem Liniensegment ist darstellbar als q + u s (für einen skalaren parameter 0 ≤ u ≤ 1).
Sich die beiden geraden schneiden sich, wenn wir finden t und uso dass p + t r = q + u s:
Sehen diese Antwortwie um diesen Punkt zu finden (oder zu bestimmen, dass es keine solche Stelle).
Dann Ihre Liniensegment schneidet der Strahl, wenn 0 ≤ t und 0 ≤ u ≤ 1.
InformationsquelleAutor der Antwort Gareth Rees
Hier ist ein C# - code für den Algorithmus gegeben, in anderen Antworten:
InformationsquelleAutor der Antwort ezolotko
Dank Gareth für eine große Antwort. Hier ist die Lösung in Python implementiert. Fühlen Sie sich frei, um entfernen Sie die tests und kopieren Sie einfach fügen Sie die eigentliche Funktion. Ich habe den write-up Methoden, die hier erschienen, https://rootllama.wordpress.com/2014/06/20/ray-line-segment-intersection-test-in-2d/.
InformationsquelleAutor der Antwort Daniel Farrell