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

1

27.06.2008, 17:22

nochmal: punkt auf einer strecke bei bestimmter distanz...

hallo, ich glaub, dass ich das schon mal hatte, wenn mich jetzt nicht alles täuscht, hab da aber leider keine konstruktive/brauchbare antwort bekommen.

also, es geht darum, ich verwende die methode, die auf www.scherfgen-software.net zur schnittpunktberechnung zweier strecken aufgeführt ist. sprich, diesen

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Schneiden sich zwei 2D-Linien?
bool LineHitsLine(const Vector2D& p,
                  const Vector2D& u,
                  const Vector2D& q,
                  const Vector2D& v,
                  Vector2D* const pHit = 0)
{
    // Die Determinante D berechnen
    const float D = u.y * v.x - u.x * v.y;

    // Wenn D null ist, sind die Linien parallel.
    if(D < 0.0001f && D > -0.0001f) return false;

    // Determinante Ds berechnen
    const float Ds = (q.y - p.y) * v.x - (q.x - p.x) * v.y;

    // s = Ds / D berechnen und prüfen, ob s in den Grenzen liegt
    const float s = Ds / D;
    if(s < 0.0f || s > 1.0f) return false;

    // Jetzt berechnen wir Dt und t.
    const float Dt = (q.y - p.y) * u.x - (q.x - p.x) * u.y;
    const float t = Dt / D;
    if(t < 0.0f || t > 1.0f) return false;

    // Die Linien schneiden sich!
    // Wir tragen den Schnittpunkt ein.
    if(pHit) *pHit = p + s * u;
    return true;
}


so, alles wunderbar, funktioniert auch, und alles bestens. ich bräucht jetzt aber eine methode, um einen punkt zu berechnen, der auf der strecke 1 in einer bestimmten distanz zu strecke 2 senkrecht zur strecke 1 liegt. ich weiss also die strecke 1 u. 2 und die distanz, die der punkt zur 2. strecke haben soll.

rein logisch funktioniert das ja (sofern sich die zwei strecken überhaupt schneiden), und würde auch genaugenommen zwei möglichkeiten offen lassen.

nur, wie mach ich das?? bin leider nicht so mathematisch gegabt. :-(

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

27.06.2008, 17:30

Mach eine Kopie deiner Linie, verschieb sie um den gewünschten Betrag und dann kannst du ja die Funktion benutzen.

3

27.06.2008, 17:41

häh? ich versteh nich ganz, was für eine kopie? und m welchen betrag denn? den müsst ich ja auch iwie ausrechnen, oder?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

27.06.2008, 17:45

Ein Punkt kann nicht "senkrecht" zu einer Linie liegen! :?
@D13_Dreinig

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

27.06.2008, 17:51

Zitat von »"David_pb"«

Ein Punkt kann nicht "senkrecht" zu einer Linie liegen! :?

Ein Punkt auf einer Linie schon. :)

Ich versteh das ungefähr so:

(Link)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

27.06.2008, 17:58

Zitat von »"drakon"«

Zitat von »"David_pb"«

Ein Punkt kann nicht "senkrecht" zu einer Linie liegen! :?

Ein Punkt auf einer Linie schon. :)


Nö, auch dann nicht. Was er haben will ist wohl das Lot von einem Punkt, auf der Geraden1, auf die Geraden2. Sodass der Abstand zwischen den Punkte mit dem von ihm gegebenen Abstandswert übereinstimmt...
@D13_Dreinig

7

27.06.2008, 18:53

auuuuuuuuuuuu, linie verschieben, ja klar! mensch, wie kann man nur so kurzsichtig sein?! das is die lösung! X-|

uff...also, ganz ehrlich, sorry für so ne frage, dazu muss man wirklich kein mathematiker sein, darauf hätte ich auch so kommen können...

trotzdem, danke! :)

und p.s.: ja, ihr habt mich beide richtig verstanden.

Werbeanzeige