glm :: dot product返回意外值

时间:2015-10-08 13:11:42

标签: c++ glm-math dot-product

我面临以下问题。在我的代码中,我处理-1。#IND000000000000值。进入调试似乎这个值是由0/0部门返回的。为了解决这个问题,我试图弄清楚为什么我有这些意想不到的0值。事实证明,glm :: dot产品不能按预期工作。我有以下代码:

double jacobian = 1.0;
double baseGeom = fabs(dot(baseDir, n1)) * fabs(dot(baseDir, baseN0)) / baseDist2;
double shiftGeom = fabs(dot(shiftDir, n1)) * fabs(dot(shiftDir, tri->N)) / shiftDist2;
jacobian *= (shiftGeom / baseGeom);

在我的例子中,shiftGeom和baseGeom都是两个等于0.0的浮点数,这应该是非法的除法。实际上,我的jacobian等于-1。#IND000000000000。因此,我倒退了。我们可以考虑baseGeom float和第一个内点产品:dot(baseDir,n1)。

根据调试,我的baseDir vec3有值:

baseDir.x = -0.98280960321426392
baseDir.y = -0.18137875199317932
baseDir.z = 0.034456323832273483

而vec3 n1的值为:

n1.x = 0.024055255576968193
n1.y = 0.059235699474811554
n1.z = 0.99795418977737427

手动执行点积:

n1.x *= baseDir.x;
n1.y *= baseDir.y;
n1.z *= baseDir.z;
double result = n1.x + n1.y + n1.z;

我有那个结果= -7.0025885090529982e-010。然而,glm :: dot让我回来了0.00000000000000000。您认为错误是什么?

0 个答案:

没有答案