Hallo!
Ich kämpfe derzeit mit dem Problem, dass nach dieser Berechnung:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
static const float fConfine = 0.2f;
const og3DVector vZTemp = ogUtilsTransformCoords(og3DVector(0.f, 0.f, 1.f), m_mTransformWithOutRotation);
const og3DVector vXTemp = ogUtilsTransformCoords(og3DVector(1.f, 0.f, 0.f), m_mTransformWithOutRotation);
const og3DVector vSTemp = ogUtilsTransformCoords(og3DVector(1.f, 0.f, 1.f), m_mTransformWithOutRotation);
const og3DVector vZAxis = og3DVectorNormalize(vZTemp - m_vPositionK);
const og3DVector vXAxis = og3DVectorNormalize(vXTemp - m_vPositionK);
const og3DVector vSAxis = og3DVectorNormalize(vSTemp - m_vPositionK);
const float fCosRotX = og3DVectorDot(vXAxis, m_vDirectionK);
const float fCosRotS = og3DVectorDot(vSAxis, m_vDirectionK);
float fRotation = acosf(og3DVectorDot(vZAxis, m_vDirectionK));
if(ogUtilsIsWithinTolerance(fCosRotX, 0.f, fConfine)) {if(fCosRotS < 0.f) fRotation = -fRotation;}
else if(fCosRotX < 0.f) fRotation = -fRotation;
|
fRotation MANCHMAL (sonst könnt ich es ja einfach nachvollziehen) den Wert -1.#IND annimmt. Mir ist es bis jetzt noch nicht gelungen den Fehler zu rekonstruieren, es passiert alle heilge Zeiten einmal, hat aber dann fatale Auswirkungen...
Nun meine Frage: Was verursacht diesen Wert, also welche falsche Operation? Nach was soll ich suchen, oder gibt es eine Möglichkeit mit einer if abzufragen, ob die Variable diesen Wert hat?
Danke schon mal