【发布时间】:2015-03-09 20:05:18
【问题描述】:
经过一周的搜索和试验,很明显我陷入了困境。我在空间中有 4 个已知点 [A,B,C,D] 以及它们各自到未知点 X 的距离。我的数学知识充其量是基本的,所以在尝试理解一些 3d 数学时遇到了令人沮丧的事情,所以任何人都可以用 c++ 中的逐步示例 来解释所需的算法X点?
谢谢。
例如:点 A {-39, 24.9062, -0.65625}、点 B {-13.5, 25.2812, -4} 和点 C {-11.5625, 43.8125, 11.625 }。距离AX = 21.5116、BX = 43.8125 和CX = 11.625。
正如人们所指出的那样,有一个解决方案是计算 X 与球体的交点,但正如我所说,我的数学并不是那么好,所以一个可行的例子将不胜感激。
我认为另一种可能的解决方案是首先找出ABC 三角形所在的平面底部与指向X 之间的距离。这个距离基本上是三面体ABCX 的高度。然后从那里使用三角函数计算出AX、BX 和CX 顶点的仰角,以计算出y = mx + b 线的m。这又是我的数学技能失败的地方。
表明 Matlab/Mathematica 示例一切都很好,但由于它使用自己的数学函数库,并假设对数学工艺有良好的工作知识来解决问题,恐怕它根本对我没有帮助。我正在寻找 C++(或 C)中这个确切问题的分步解决方案。
我看过的任何地方(包括 SO)都没有人从绝对开始到绝对结束全面解释了这个 3 维问题的解决方案。不是每个人都擅长数学,这就是为什么我更喜欢一个工作示例,这样我就可以通过并更好地掌握。
无论过去还是将来,都感谢大家提供的各种链接和建议。
【问题讨论】:
-
我以前看过这些,但无论如何都感谢建议链接。可悲的是,我的实现需要使用 C++(或者 C,如果涉及到的话)以及处理平面而不是 3D 空间的线性代数,所以再一次不行。
-
这个stackoverflow.com/q/25850564/2521214 怎么样?只需从每个点投射球体,半径等于到 X 的距离。找到所有球体对组合之间或所有球体组合之间的共同交点。
-
@CodieCodeMonkey - OP 明确表示您声称完全重复的问题对他/她没有帮助。这是有道理的,因为他/她想要 C++ 而不是 Matlab
标签: c++ algorithm 3d geometry coordinate-systems