Hilfe bei einer Kollisionserkennung gesucht

09/01/2013 14:41 -AmA-#1
Hallo allerseits, ich habe ein mathematisches Problem.
Leider habe ich nicht so viel Ahnung, aber vieleicht gibt es ja wer, der mir helfen kann.

Ich habe ein Viereck und ein Punkt in einer 3D Matrix.
Ich benenne die Vektoren einfach mal:
A: Viereck unten links
B: Viereck oben links
C: Viereck unten rechts
D: Viereck oben rechts
P: Vektor des Punktes

Ich möchte nun aus diesen Vektoren den Abstand T von P zum Viereck errechnen.
Zusätzlich muss ich wissen, wie weit P vom linken Rand (AB) und vom rechten Rand (CD) relativ entfernt ist und wie weit P vom Rand oben (BD) und vom Rand unten (AC) relativ entfernt ist.

Als erstes habe ich mich darüber Informiert, wie man eine Kollisionserkennung bei dreiecken macht. Dazu habe ich mir dieses Tutorial angesehen:
[Only registered and activated users can see links. Click Here To Register...]
Dort bin ich aber an der Erklärung, wie man t berechnet.
Hier meine Rechnung:
Code:
					V2:
					X: 150 Y: 50 Z: 50


V1:
X: 100 Y: 100 Z: 100


					V3:
					X: 200 Y: 150 Z: 150

face normal = (V2 - V1) x (V3 - V1)
X: 5000 = (150 - 100) x (200 - 100)
Y: -2500 = (50 - 100) x (150 - 100)
Z: -2500 = (50 - 100) x (150 - 100)

triPoint = (V1 + V2 + V3) / 3
X: 150 = (100 + 150 + 200) / 3
Y: 100 = (100 + 50 + 150) / 3
Z: 100 = (100 + 50 + 150) / 3

0 = (faceNormal.x * triPoint.x) + (faceNormal.y * triPoint.y) + (faceNormal.z * triPoint.z) + D
0 = (5000 * 150) + (-2500 * 100) + (-2500 * 100) + D

D = -((faceNormal.x * triPoint.x) - (faceNormal.y * triPoint.y) - (faceNormal.z * triPoint.z))
-250000 = -((5000 * 150) + (-2500 * 100) + (-2500 * 100))

V1(x1, y1, z1) * t == V2(x2, y2, z2) * (1 - t)

t = -(A*x2 + B*y2 + C*z2 + D) / (A*(x1-x2) + B*(y1-y2) + C*(z1-z2))
Mittlerweile bin ich mir nicht mal sicher ob dies der richtige Ansatz ist.
Kann mir wer die Lösung zeigen, einen anderen Ansatz oder ein anderes Tutorial empfehlen oder sonst irgendwie helfen?