Wow, meine Frage hat ja eine richtige Diskussion ausgelöst =)
Ich berechne den Abstand mit folgender Methode (hergeleitet von:
http://mathworld.wolfram.com/Line-LineDistance.html)
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public static float DistanceLineToRay(Vector3 firstLine1, Vector3 firstLine2, Vector3 secondLineStart, Vector3 secondLineDirection)
{
Vector3 a = Vector3.Subtract(firstLine2, firstLine1);
Vector3 b = secondLineDirection;
Vector3 c = Vector3.Subtract(secondLineStart, firstLine1);
Vector3 v1 = Vector3.Cross(a, b);
float zähler = Vector3.Dot(c, v1);
Vector3 v2 = Vector3.Cross(a, b);
float nenner = v2.Length();
// Prüfen ob die Linien Parallel sind
if (nenner > -0.1 && nenner < 0.1)
{
return 0;
}
float distance = zähler / nenner;
return distance;
}
|
Diese funktioniert auch so wie sie sollte. Nur brauche ich jetzt noch den Punkt, wo eben dieser Abstand "gemessen" wird.
Der gesuchte Punkt nennt sich Lotpunkt oder Fusspunkt. Das Lot steht senkrecht zum Strahl, so findest du den Punkt.
Wie muss ich das genau verstehen? bzw. wie rechne ich jetzt den PUnkt aus?
Danke euch