Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

06.12.2010, 19:43

Äh ja, nur berechnet SaRu da den kürzesten Abstand zwischen zwei Geraden und nicht zwischen einem Strahl und einer Linie. Sobald eine Gerade zu einem Strahl und die andere zu einer Linie reduziert werden bleibt einem nichts andres übrig als auch den Strahlparameter oder eine äquivalente Größe zu bestimmen da man sonst nicht wissen kann ob der Abstand überhaupt der richtige ist!? Zumindest fällt mir kein anderer Weg ein, zumindest kein wirklich einfacher...

EDIT: Abgesehen davon ging ich davon aus dass der Threadersteller die Methode verwendet die ihm in seinem letzten Thread zu diesem Problem vorgeschlagen wurde, was bedeutet dass er den Parameter kennt. Darum eben meine ursprüngliche Gegenfrage wie er das ganze nun genau macht ohne eben den von ihm gesuchten Punkt bereits zu berechnen...

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (06.12.2010, 19:52)


TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

12

06.12.2010, 20:06

Ich kannte den anderen Thread nicht und weiss nicht in welcher Dimension wir uns befinden. Betrachte meine Aussagen als allgemeine Gedanken und Vermutungen. Was er nun genau macht, weiss ich nicht.

13

07.12.2010, 08:17

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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

07.12.2010, 10:38

Das Problem ist dass der von dir nun genommene Weg diesen Punkt nicht einfach liefert. Wenn du den Punkt wissen willst musst du es z.B. so wie hier machen...

Werbeanzeige