在前面的"不同基下的坐标变换"对于不同坐标系的变换不是一般的描述形式,在这里更进一步考虑了坐标系之间的关系,和描述形式。
一个坐标空间并不是只有基向量来刻画,还需要一个基点来描述这个坐标空间的位置。
也就是
{
, (x0, y0, z0)},这里为基向量,(x0,y0,z0)为基点。
在一个空间里面,定义一个最基本的坐标系。然后在这个空间里面定义两个不同的坐标系:
如图所示:
在上面的图中:Base Coordinate为定义这个空间的基本坐标系,Coordinate0和Coordinate1为衍生出的两个坐标系。
对于基向量:
对于基点
p0+Offset = p1
现在在这个空间中取定一点p
他在Coordinate0中的坐标为(x0,y0,z0)
他在Coordinate1中的坐标为(x1,y1,z1)
那么从上面的图中可以得到关系式
[y0] [y1]
[z0] [z1]
这里面:
*[x0]表示当Coordinate0和Base Coordinate基点重合的时候,在Coordinate0中p点在Base Coordinate
[y0]
[z0]
中的坐标,所以加上偏移过后就是在Coordinate0中点p在Base Coordinate中的坐标形式。
这里记在Coordinate0中坐标为C0,在Coordinate1中坐标为C1,p0-p1 = (px,py,pz) = Poff
而对于Poff相当于对
*C0的一个Translation变换,那么可以写成矩阵形式
| 0, 0, 0 , 1| | 0, 0, 0 , 1|
Translation Matrix = Tr = | 1, 0, 0, px |
| 0, 1, 0, py |
| 0, 0, 1, pz |
| 0, 0, 0, 1 |
则有
Tr*A0*C0 = A0*T*C1
Inv(A0) * Tr * A0 * C0 = T * C1
|Inv(
), 0| * | , Poff | * C0 = T * C1
| 0, 0, 0, 1| | 0, 0, 0, 1 |
而:
|Inv(
), 0| * | , Poff | = | E3x3, Inv()*Poff|
| 0, 0, 0, 1| | 0, 0, 0, 1 | | 0, 0, 0 , 1 |
最后得到
Inv(T) * | E3x3, Inv(
)*Poff| * C0 = C1
| 0, 0, 0 , 1 |
这和在没有偏移的情况下多了中间这个矩阵,中间这个矩阵就是偏移矩阵。
这里也说明了在不同坐标系情况下是先考虑
1:偏移(将两个基向量放到同一个基点考虑)
2:再是基向量的变换矩阵
对于 | E3x3, Inv(
)*Poff| 矩阵的说明 :
| 0, 0, 0 , 1 |
Inv(
)*Poff实际上是将Base Coordinate中的Poff转换得到在Coordinate0中的表达形式,因为C0是在Coordinate0中的坐标,而偏移向量p0-p1是在Base Coordinate中,所以先将p0-p1变换到Coordinate0中,这样C0就完成了偏移动作。
Inv(T) * | E3x3, Inv(
)*Poff| * C0 = C1 这个等式是一般情况下的表达式,通常情况下
| 0, 0, 0 , 1 |
Coordinate0就是Base Coordinate,这样Inv(
)是E,所以就直接在C0上施加p0-p1。
补充:
考虑向量的情况
| E3x3, Inv(
)*Poff|*C0 = T*C1
| 0, 0, 0 , 1 |
对于这个表达式,如果C0和C1是向量,即第四维为0,则 | E3x3, Inv(
)*Poff|该矩阵不起作
| 0, 0, 0 , 1 |
用,则表达式退化为:C0 = T*C1
这也就是说前面的p0和p1没有作用,这个时候两个坐标系是同基点的。
在考虑向量的情况下的模型:
这个时候任意的坐标系都是同基点的。因为是同基点,那么这里面的不同基中的向量是同构的。
2013-11-02 :
[y0] [y1]
[z0] [z1]
即:
*(x0, y0, z0, p0)^t = *(x1, y1, z1, p1)^t
阅读(3045) | 评论(0) | 转发(0) |