相对坐标和局部坐标的转换

新快照17w50a新增了局部坐标(暂时翻译成这个吧),用来标记相对玩家视野的左、上、前位置。

当玩家的Rotation为 [rx,ry]时,即自上而下顺时针自南旋转rx ,自水平向下ry时,玩家的局部坐标(记为l,u,f)在相对坐标系(x,y,z)下的坐标为

l: (cos rx,0,sin rx)
u: (-sin rx sin ry, cos ry, cos rx sin ry)
f: (-sin rx cos ry, -sin ry, cos rx cos ry)

即 ^l ^u ^f 等价于 ~x ~y ~z, 如果
x=l cos rx -u sin rx sin ry-f sin rx cos ry
y=u cos ry-f sin ry
z=l sin rx+u cos rx sin ry+f cos rx cos ry

l=x cos rx +z sin rx
u=-x sin rx sin ry+y cos ry+z cos rx sin ry
f=-x sin rx cos ry-y sin ry+z cos rx cos ry

即luf到xyz的转换矩阵为
(cos rx   -sin rx sin ry    -sin rx cos ry)
(0          cos ry             -sin ry          )
(sin rx    cos rx sin ry     cos rx cos ry)

本人不保证计算的准确性,谁有空就重新计算一下吧……

发表评论

您必须 登录 才能发表留言!