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. :-(