给定平面A上的一个点,我希望能够映射到平面B上的相应点。我在两个平面之间有一组N对应的参考点,但是,整体映射不是简单的仿射变换(对我来说没有单应性)。
我尝试过的事情:
对于给定的点,找到平面A中的三个最接近的参考点,计算该三角形的粗体坐标,然后将该变换应用于平面B中的相应参考点。它如何失败:有时三个最接近点几乎是共线的,因此误差很大。此外,跨越边界时映射没有一致性。这非常“紧张。”
在给定N个参考点(N ^ 3)的情况下计算所有可能的三角形。按尺寸订购。对于给定的点,找到它所在的最小三角形。这将线性修正 分问题,但仍然非常紧张和缓慢。
从三角形平面A开始。迭代参考点,将每个参考点添加到参考平面。每次添加一个点时,它至少存在于一个三角形中。使用新参考点作为顶点将该三角形分成三个三角形。您最终得到的平面A是三角形的,因此您可以轻松地从平面A映射到平面B.问题:您可以证明每个三角形都有一个位于平面边缘的点。如果你的参考点远离飞机的边缘,这会导致巨大的错误。
我觉得这应该是一个相当标准的问题。有没有标准的算法/库?
答案 0 :(得分:0)
你去了我的朋友..我使用了它myslef,只能建议你尝试一下。
Kahn Academy - Matrix转换
了解我们如何将一组矢量映射到另一组。用于定义线性变换的矩阵
https://www.khanacademy.org/math/linear-algebra/matrix_transformations