2D坐标系平移原理(几何)
案例¶
已知 红色点在蓝色坐标系的位置为(3, 2)
蓝色坐标系的原点在黑色坐标系中的位置为(2,2)
求解: 红色点在黑色坐标系中的位置点?
分析计算¶
初步认知¶
如果从坐标图上我们可以很快的计算出结果为 (5, 4)。
那么这个值是如何来的呢:
3 + 2 = 5
2 + 2 = 4
Tip
第一行的 3 + 2
中的 3
指的是 红色点 在 蓝色坐标系 中 x坐标 位置。
第一行的 3 + 2
中的 2
指的是 蓝色坐标系 相对于 黑色坐标系 在中 x轴 方向 平移距离。
第一行的5
是计算出来的 红色点 在 黑色坐标系 中 x坐标 位置。
第二行的2 + 2
中的前一个2
指的是 红色点 在 蓝色坐标系 中 y坐标 位置。
第二行的2 + 2
中的后一个2
指的是 蓝色坐标系 相对于 黑色坐标系 在中 y轴 方向 平移距离。
第二行的4
是计算出来的 红色点 在 黑色坐标系 中 y坐标 位置。
坐标平移抽象化¶
我们可以这样理解 (2,2) 这个个坐标:
- 蓝色坐标系相较于黑色坐标系,在x方向上平移了 2 个单位的距离。
- 蓝色坐标系相较于黑色坐标系,在y方向上平移了 2 个单位的距离。
那么,假设:
- 蓝色坐标系相较于黑色坐标系,在x方向上平移了 i 个单位的距离。
- 蓝色坐标系相较于黑色坐标系,在y方向上平移了 j 个单位的距离。
这里我们就可以通过 (i, j) 来描述蓝色坐标系的平移距离。
坐标位置抽象化¶
我们可以这样理解 (3,2) 这个个坐标:
- 在 蓝色坐标系 中, 红色点 在x轴坐标为 3。
- 在 蓝色坐标系 中, 红色点 在y轴坐标为 2。
那么,假设:
- 在 蓝色坐标系 中, 红色点 在x轴坐标为 x。
- 在 蓝色坐标系 中, 红色点 在y轴坐标为 y。
这里我们就可以通过 (x, y) 来描述红色点在蓝色坐标系中的坐标。
分析总结¶
蓝色坐标系相对于黑色坐标系中平移的距离为(i,j)
红色点在蓝色坐标系的位置为(x, y)
红色点 在 黑色坐标系 中位置计算为:
x + i = dstX
y + j = dstY
Tip
dstX和dstY为计算的结果,也就是 红色点 在 黑色坐标系 中的位置。
数学推导¶
x + i = dstX
y + j = dstY
以上的计算公式我们也已经分析出来了。
数学分析¶
我们来进行数学转换一下:
1 * x + 0 * y + i * 1 = dstX
0 * x + 1 * y + j * 1 = dstY
0 * x + 0 * y + 1 * 1 = 1
我们采用矩阵表述方式如下:
问题¶
推导出来的结果为两个矩阵相乘得到一个新的矩阵。
我们这么来看问题:
那么: $$ A \cdot B = C $$ 但是:
- A 矩阵是一个两行三列的矩阵,记做(2, 3)
- B 矩阵是一个两行一列的矩阵,记做(2, 1)
此时:
- (2, 3)的矩阵是不可以和(2, 1)的矩阵相乘的,这个是不满足矩阵相乘的规则的。
因此:
- 需要将这些矩阵补成齐次坐标矩阵
我们可以这么来看问题:
1 * x + 0 * y + i * 1 = dstX
0 * x + 1 * y + j * 1 = dstY
0 * x + 0 * y + 1 * 1 = 1
转换为新的公式为:
即: $$ A \cdot B = C $$ 此时:
- A 矩阵为3行3列,记做(3, 3)
- B 矩阵为3行1列,记做(3, 1)
- C 矩阵为3行1列,记做(3, 1)
- A * B 即 (3,3) * (3,1) 得到新的矩阵为(3,1)
- 满足矩阵乘法
公式总结¶
在坐标系平移问题上,我们可以通过数学公式进行计算得到相同点在不同坐标系中的表达。
- dstX是需要计算出来的,点在当前坐标系中的x坐标
- dstY是需要计算出来的,点在当前坐标系中的y坐标
- i 是已知对应的坐标系相对与当前坐标系x方向平移的距离
- j 是已知对应的坐标系相对与当前坐标系y方向平移的距离
- x 是 点在对应坐标系中的x坐标
- y 是 点在对应坐标系中的y坐标