我有一个刚体,可以绕垂直于屏幕的轴平移和/或旋转。我在刚体上有四个点的坐标。如何获取刚体上未知点的坐标?
我可以用四个已知点组成一个线性方程来得到第五个未知点吗?如何适应等式中的平移和旋转?
最佳答案
关于点 p 旋转 θ 和平移 t' 的任何组合都可以表示为旋转 θ 关于起源,然后是适当的翻译 t。所以问题就变成了根据已知点计算出 θ 和 t 的值。然后可以将变换应用于未知点。
我认为,最简单的工作方式是在齐次坐标系中。对于列向量,θ 围绕原点的旋转由矩阵 M(θ) 表示:
cos(θ) sin(θ) 0
-sin(θ) cos(θ) 0
0 0 1
t = (tx, ty, 1)T 的翻译由矩阵 T( t):
1 0 tx
0 1 ty
0 0 1
整体变换是乘积 T(t)M(θ)。这需要解决三个未知数 θ、tx 和 ty。对于四个已知点,有八个方程(每个点两个,对应于 x 和 y 坐标),因此有足够多的信息来求解未知数。只需插入已知点的值即可。
关于algorithm - 如何从四个可以平移或旋转的点中找到一个点的坐标?所有这些点形成一个刚体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9425863/