JavaScript 中的 3D 三边测量

log*_*lic 4 javascript trilateration

我正在尝试使用https://github.com/gheja/trilateration.js在 Javascript 中进行 3D 三边测量 ,它似乎正在工作。然而,某些简单的情况应该会产生解决方案,但事实并非如此。例如:

var p1 = {x:69, y:0,  r:69, z:0}
var p2 = {x:0,  y:50, r:50, z:0};
var p3 = {x:0,  y:80, r:80, z:0};
trilaterate(p1, p2, p3, false)
Run Code Online (Sandbox Code Playgroud)

这似乎是一个极其简单的例子,应该在 x:0,y:0 处产生一个解决方案,但该函数却告诉我没有解决方案。我是否误解了三边测量或函数中存在错误?

任何帮助,将不胜感激。

Gáb*_*éja 6

是的,这实际上是库中的一个错误,感谢@logidelic 找到它并感谢@dtudury 追踪它。

我现在已经修复了这个问题,如果该值接近于零,则将其清零:

b = sqr(p1.r) - sqr(x) - sqr(y);

if (Math.abs(b) < 0.0000000001)
{
    b = 0;
}

z = Math.sqrt(b);
Run Code Online (Sandbox Code Playgroud)