[Gelöst] Point in Triangle - Test (Baryzentrtische Koordinaten) funktioniert nicht
Hallo,
ich wollte überprüfen, ob ein Punkt in einem Dreieck liegt und verwende das System mit den Baryzentrischen Koordinaten. Jedoch bekomme ich immer false als Rückgabewert.
Hier der Code:
|
C-/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
24
25
|
bool tbPointIsInTriangle(tbVector2 vA, tbVector2 vB, tbVector2 vC, tbVector2 vP)
{
tbVector2 v0, v1, v2;
v0 = vC - vA;
v1 = vB - vA;
v2 = vP - vA;
float vDot00, vDot01, vDot02, vDot11, vDot12; // Punktprodukte
vDot00 = tbVector2Dot(v0, v0);
vDot01 = tbVector2Dot(v0, v1);
vDot02 = tbVector2Dot(v0, v2);
vDot11 = tbVector2Dot(v1, v1);
vDot12 = tbVector2Dot(v1, v2);
float fU, fV; // Bayzentrische Koordinaten
float invDenom = 1 / (vDot00 * vDot11 - vDot01 * vDot01);
fU = (vDot11 * vDot02 - vDot01 * vDot12) * invDenom;
fV = (vDot00 * vDot12 - vDot01 * vDot02) * invDenom;
return (fU >= 0) && (fV >= 0) && (fU + fV < 1);
}
|
Ich hoffe, mir kann jemand helfen, da es für die Schule ist.
Grüße
Patrick
Albert Einstein sagte: "2 Stunden mit einem netten Mädchen fühlen sich an wie 20 Minuten, 20 Minuten auf einem heißen Ofen fühlen sich an wie 2 Stunden. - Das ist Relativität"
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Patrick Z.« (20.04.2017, 06:42)