如何使用三点法计算WRF?


让我们看看指向P1为x1、y1、z1。P1将定义WRF的原点。

P1=[x1,y1,z1]

设点P2的坐标为x2,y2,z2。P2将位于WRF的正x轴上。

P2=[x2,y2,z2]

设点P3的坐标为x3,y3,z3。P3将位于WRF xy平面的象限1或象限2。

P3=[x3,y3,z3]


我们必须找到沿WRF的x,y和z轴的单位向量。这些将用于构造旋转矩阵,该矩阵定义了WRF相对于BRF的方向。根据这个旋转矩阵,我们将使用欧拉角教程提取定义WRF方向的Euler角度。


ux=[x2-x1,y2-y1,z2-z1];norm\ux=sqrt(ux[0]^2+ux[1]^2+ux[2]^2);如果norm\ux<10 mm,消息:“无效数据:点P2和P1彼此太近”退出else uvx=ux/norm\ux;endif v13=[x3-x1,y3-y1,z3-z1];norm\u13=sqrt(v13[0]^2+v13[2]^2);如果norm\u13<10 mm,消息:“无效数据:点P3和P1彼此太近“exit else uv13=v13/norm_v13;endif//uz=CrossProduct(uvx,uv13)uz=[(uvx[1]*uv13[2])-(uvx[2]-uv13[1]),(uvx[2]*uv13[0])-(uvx[0]*uv13[2]),(uvx[0]*uv13[1])-(uvx[1]*uv13[0]);//#此向量的范数将为sinθ,其中θ是两个向量之间的角度,使用右手法则。如果!(标准值<10mm)和!(norm_v13<10 mm)norm_uz=sqrt(uz[0]^2+uz[1]^2+uz[2]^2);uvz=uz/norm_uz;//uvy=CrossProduct(uvz,uvx)uvy=[(uvz[1]*uvx[2])-(uvz[2]*uvx[1]),(uvz[2]*uvx[0])-(uvz[0]*uvx[2]),(uvz[0]*uvx[1]-(uvz[1]*uvx[0])]//R=[uvx,uvy,uvz],其中uvx,如果abs(uvz[0])==1:beta_deg=uvz[0]*90 gamma=arctan2(uvy[0],uvx[0])gamma_deg=rad2deg(gamma)alpha_deg=0,则uvy和uvz是列向量,否则:beta=arcin(uvz[0])beta_deg=rad2deg(beta)gamma=arctan2(-uvy[0],uvx[0])gamma_deg=rad2deg(gamma)alpha=arctan2(-uvz[1],uvz[2])alpha_deg=rad2deg(alpha)endif result_WRF=[x1,y1,z1,[α度,β度,γ度]


你觉得有用吗?是的

发送反馈
抱歉,我们帮不了忙。通过您的反馈帮助我们改进本文。