5 Stimmen

Prüfen, ob ein Punkt auf einer 3d-Linie liegt?

Ich weiß, wie man überprüft, ob ein Punkt auf einer 2D-Linie liegt oder nicht, aber ich möchte dies in 3D tun. Irgendeine Idee?

        // slope from point 1 to point 3
        var p13:Number = (Math.atan2 (end.x - start.x, end.y - start.y)) * toDegrees;

        // slope from point 1 to point 2 -- matches?
        var p12:Number = (Math.atan2 (point.x - start.x, point.y - start.y)) * toDegrees;

        return Math.round(p12) == Math.round(p13);

0 Stimmen

Ich glaube, diese Frage wurde hier gestellt stackoverflow.com/questions/563198/

0 Stimmen

Algorithmisch gesehen, sollte dies auf Mathematik SE obwohl die Frage vielleicht schon beantwortet wurde.

6voto

Lee Louviere Punkte 5066

Normalisieren Sie die Vektoren. Prüfen Sie, ob die Normalen übereinstimmen.

Finde den größten Wert, teile alle anderen Werte durch diesen Wert und du erhältst eine Vektornormale.

Jeder Punkt auf einer Linie sollte die gleiche Vektornormale haben.

3voto

Martin Beckett Punkte 92477

Ein Punkt kann niemals "auf" einer Linie in realen Koordinaten liegen. Sie müssen den Abstand zum nächstgelegener Punkt zur Linie und entscheiden Sie, ob dies für Sie ausreichend ist.

1 Stimmen

-1 - sehr lange und komplexe Lösung. völlig unnötig. siehe Xaades Antwort.

2 Stimmen

Hier ist eine schönere Formel: mathworld.wolfram.com/Punkt-Linien-Abstand3-Dimensional.html Diese Lösung ist gut, weil man sich keine Gedanken über Sonderfälle machen muss und die "Toleranz" eher ein Abstand als ein Winkel sein kann.

0 Stimmen

@Jenko - das Problem beim Vergleich von Normalen ist, dass der Abstand zur Linie proportional zum Abstand entlang der Linie ist.

0voto

Andrew Punkte 23650

Die Gleichung einer Linie lautet

v(t) = v0 + t*dir

Donde v0 ist ein Punkt auf einer Linie und dir ist die Richtung, in die es geht. Prüfen Sie einfach, ob Ihr Punkt dieser linearen Gleichung mit ausreichender Genauigkeit entspricht

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X