Strecke abwischen Punkt und Gerade im 3D Raum

Varianzanalyse, Diskriminanzanalyse, Kontingenzanalyse, Faktorenanalyse, Clusteranalyse, MDS, ....

Moderator: EDi

Antworten
Statistik.queen
Beiträge: 2
Registriert: Do Dez 22, 2022 8:38 am

Strecke abwischen Punkt und Gerade im 3D Raum

Beitrag von Statistik.queen »

Liebe R-Community,

Ich bin aus der Suche nach einer Funktion in R, mit welcher ich in einem dreidimensionalen Raum die Strecke zwischen einem beliebigen Datenpunkt und einer beliebigen Geraden (hier bezeichnet als Vektor) einzeichnen und berechnen kann. Die Strecke sollte in einem 90 Grad Winkel vom Punkt aus auf die Gerade treffen.
Ich habe mal versucht, es graphisch darzustellen, um es besser zu illustrieren (siehe Dateianhang).

Das generelle Verfahren kennt man eventuell bereits aus Mathe Oberstufe, dort war es als „Lotfußpunktverfahren“ bekannt (https://de.serlo.org/mathe/2137/abstand ... -geometrie).

Super wäre also eine Funktion, die die Koordinaten des Punkts und Richtung des Vektors bekommt und die Koordinaten sowie Länge der Strecke dazwischen ausgibt.

Vielen Dank schonmal für eure Hilfe!
Dateianhänge
81E903FC-4EC4-4139-BE50-A871B02BD3E6.jpeg
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Strecke abwischen Punkt und Gerade im 3D Raum

Beitrag von bigben »

Hallo Statistik.queen,

hast Du das hier schon gefunden? https://stackoverflow.com/a/35209406/6503141
einer beliebigen Geraden (hier bezeichnet als Vektor)
Ich hatte ja schon mal woanders über die konkrete Bedeutung von "Vektor" gesprochen. Um eine Gerade zu beschreiben reicht ein Vektor nicht aus. In der Regel verwendet man einen Vektor um einen Punkt auf der Geraden zu beschreiben und einen anderen, um die Richtung der Geraden zu beschreiben. So auch im von Dir verlinkten Text. Dort bezeichnet p den Ortsvektor des Punktes und a und b definieren die Gerade.

Wir brauchen, um die Formel auf Deiner Seite umzusetzen eine Formel für das Kreuzprodukt der Vektoren und eine für den Betrag eines Vektors. Im dreidimensionalen Fall kann man das Kreuzprodukt so programmieren:

Code: Alles auswählen

`%mal%` <- function(a, b) c((a[2]*b[3] - a[3]*b[2]), 
                            (a[3]*b[1] - a[1]*b[3]),
                            (a[1]*b[2] - a[2]*b[1]))
und den Betrag so:

Code: Alles auswählen

betrag <- function(v) sqrt(sum(v^2))
Die Formel aus Deinem Link wird dann zu

Code: Alles auswählen

distanz <- function(p, a, b) betrag((p - a) %mal% b) / betrag(b)
Anwendungsbeispiel mit den Zahlen aus Deinem Link:

Code: Alles auswählen

distanz( p = c(3, 2, 1), a = c(-3, 4, -1), b = c(-1, 2, 1) )
Ich überlasse es Dir zu prüfen, ob da das gleiche herauskommt wie in Deinem Link.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Statistik.queen
Beiträge: 2
Registriert: Do Dez 22, 2022 8:38 am

Re: Strecke zwischen Punkt und Gerade im 3D Raum

Beitrag von Statistik.queen »

Lieber Bernhard,

ich danke Dir vielmals! Es kommt dasselbe Ergebnis raus, wie wenn man es händisch berechnet. Toll!!!

Nun würde ich gerne diese Strecke auch noch mittels einer Funktion in einem 3D plot einzeichnen können. Hättest du hier vielleicht auch noch einen Tipp, wie sich dies umsetzen ließe?

Auf jeden Fall schonmal vielen vielen Dank bis hierhin! Das hat mir sehr viel geholfen.

Viele Grüße
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Strecke abwischen Punkt und Gerade im 3D Raum

Beitrag von bigben »

Hallo,

eine fertige Lösung habe ich dafür nicht, aber die Bildersuche bei Google hat mich auf diese Seite geführt: http://www.sthda.com/english/wiki/impre ... ualization

Demnach kann man mit dem da besprochenen Garafikpaket nicht nur 3D-Linien zeichnen:

Bild

sondern sogar 3D-Pfeile:

Bild

Wenn Du also mit Vektorrechnung den Schnittpunkt findest kannst Du mit diesen Funktionen Deine Grafik zeichnen.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten