summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2016-05-14 10:20:32 +0200
committerStanislaw Halik <sthalik@misaki.pl>2016-05-14 10:20:32 +0200
commitd61985973522cb00b85351c8dfa6a3cba715f82a (patch)
tree101f1433e735883a18515eb61b3dbd2327272a56
parent246b75c7e991cca65188608ab432f17571e28783 (diff)
pose-widget: try harder to avoid small denominator
Previous commit fixed only the case with one perpendicular axis of rotation with the rest fixed at origin. This one works with all three degrees of freedom enabled. Reported-by: @MathijsG Issue: #356
-rw-r--r--pose-widget/glwidget.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/pose-widget/glwidget.cpp b/pose-widget/glwidget.cpp
index f85e2ae1..b7da4cef 100644
--- a/pose-widget/glwidget.cpp
+++ b/pose-widget/glwidget.cpp
@@ -68,13 +68,13 @@ public:
dot01 = v0.dot(v1);
dot11 = v1.dot(v1);
const num denom = dot00 * dot11 - dot01 * dot01;
- if (std::fabs(denom) < 1e-1f)
+ if (std::fabs(denom) < 1e3)
{
// for perpendicular plane, ensure u and v don't come out right
// this is done here to avoid branching below, in a hot loop
- invDenom = -1;
- dot00 = dot01 = dot11 = 1;
- v0 = v1 = vec2(1, 1);
+ invDenom = 0;
+ dot00 = dot01 = dot11 = 0;
+ v0 = v1 = vec2(0, 0);
}
else
invDenom = 1 / denom;