#1 06.02.2008 14:18:51

Chris
ExtremeMember
Ort: Erlangen, Bay
Registriert: 24.01.2005
Beiträge: 694
Web-Seite

Quad. Abstand: Punkt <-> Dreieck

Hallo,

ich bräuchte den quadratischen Abstand von Punkt und Dreieck.
Gibt es dazu einen speziellen Algorithmus, oder muss ich eine von den ClosestPtPointTriangle() Funktionen benutzen und mit dem closest Point dann den Abstand ausrechnen?

Chris


Nimm meinen Rat an - ich brauch ihn sowieso nicht

Offline

 

#2 06.02.2008 15:37:42

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: Quad. Abstand: Punkt <-> Dreieck

Ich würde wahrscheinlich aus den 3 Kanten 3 Geraden machen und davon den Abstand zum Punkt ausrechnen. Den relevanten Abstand sollte man auch einfach herausfinden, da 2 negativ sein müssten und nur einer positiv. Einen Sonderfall müsstest du nur beachten, nämlich dann, wenn der Punkt genau über einer Kante liegt.


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#3 06.02.2008 18:08:09

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Quad. Abstand: Punkt <-> Dreieck

Reden wir von 2D oder 3D ?


My software never has bugs. It just develops random features.

Offline

 

#4 06.02.2008 18:39:33

Chris
ExtremeMember
Ort: Erlangen, Bay
Registriert: 24.01.2005
Beiträge: 694
Web-Seite

Re: Quad. Abstand: Punkt <-> Dreieck

3D ... dann geht, soweit ich ihn  verstanden habe, Artzuks Algorithmus nicht, oder?


Nimm meinen Rat an - ich brauch ihn sowieso nicht

Offline

 

#5 06.02.2008 18:49:57

Lotipats
UltraMember
Registriert: 17.05.2005
Beiträge: 395

Re: Quad. Abstand: Punkt <-> Dreieck

Bei dem Ansatz mit dem Abstand zu den Geraden kann es ein Problem sein, wenn der Punkt z.B. genau senkrecht zum Schwerpunkt ist. Jedenfalls so, wie ich das verstanden habe.

Prinzipiell würde ich erstmal den Abstand des Punktes zur Ebene, die zwei beliebige Seiten des Dreiecks aufspannen berechnen. Das Problem dabei ist nur, dass das Dreieck nicht unendlich ist. D.h. der Abstand zu den Strecken( "Geraden") des Dreiecks spielen auch eine Rolle.

Momentan habe ich keine brauchbare Idee, tut mir leid. Aber vllt. hilft das was ich gesagt habe ja für einen Denkanstoß.

LOTIPATS

Offline

 

#6 07.02.2008 06:36:35

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: Quad. Abstand: Punkt <-> Dreieck

Ja stimmt, bei 3D musst du nicht Geraden nehmen, sondern Ebenen. Und es wird noch komplizierter. Solang immer nur ein Abstand zu den Ebenen positiv ist, gibts ja kein Problem. Aber sind es mehrere, dann musst du noch mehr rechnen, weiß aber so früh am Morgen noch keinen Ansatz dafür wink

Beitrag geändert von artzuk (07.02.2008 06:38:36)


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#7 08.02.2008 16:36:51

Lotipats
UltraMember
Registriert: 17.05.2005
Beiträge: 395

Re: Quad. Abstand: Punkt <-> Dreieck

SO, ich habe mir das mal überlegt, hier ist mein Lösungsvorschlag:

  1. den Punkt P in die Ebene des Dreiecks projezieren --> P'
  2. feststellen ob der Punkt im Dreieck ist oder nicht (http://www-lehre.informatik.uni-osnabru … ode42.html)
  3. liegt er im Dreieck:
    1. kleinsten Abstand einer Seiten(hier kann die Gerade genutzt werden), oder besser gesagt den Punkt (ich nenne ihn K)
    2. Abstand Dreieck-Punkt ist Abstand K<->P
  4. liegt er nicht im Dreieck:
    1. analog zum anderen den Abstand zu den Geraden der Seiten bestimmen --> Punkte I, K, L
    2. sind die Punkte I, K, L nicht auf den Strecken, so den richtigen "Eckpunkt" der entsprechenden Seite nehmen (also wenn z.B. Seite AB mit I, so A nehmen, falls AI<BI) --> Punkte I', K' und L' sind die, die den kürzesten Abstand zu P' von den 3 Seiten haben
    3. der Punkt, der von I', K' und L' den kleinsten Abstand zu P' hat ist der gesuchte Punkt, ich nenne ihn mal R
    4. |RP| ist der gesuchte Abstand vom Punkt P zum Dreieck



War das jetzt verständlich?
Oder sieht sogar jmd. einen Denkfehler?

EDIT: Fehler behoben, deshalb PS entfernt!

LOTIPATS

Beitrag geändert von Lotipats (09.02.2008 13:02:36)

Offline

 

#8 10.02.2008 10:59:45

Chris
ExtremeMember
Ort: Erlangen, Bay
Registriert: 24.01.2005
Beiträge: 694
Web-Seite

Re: Quad. Abstand: Punkt <-> Dreieck

Ok das ist dann das gleiche wie:

[quote=Chris]eine von den ClosestPtPointTriangle() Funktionen benutzen und mit dem closest Point dann den Abstand ausrechnen

Danke,
Chris


Nimm meinen Rat an - ich brauch ihn sowieso nicht

Offline

 

Brett Fußzeile

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson