456
社区成员
发帖
与我相关
我的任务
分享
DXDXVECTOR3 Pos, Target;
float dx = (Pos.x-Target.x);
float dy = (Pos.y-Target.y);
float dz = (Pos.z-Target.z);
float lXZ = fsqr(dx*dx + dz*dz);
float lYZ = fsqr(dy*dy + dz*dz);
float lXY = fsqr(dy*dy + dx*dx);
float XYZ = fsqr(dy*dy + dx*dx + dz*dz);
float sinY = (dx / lXZ);
float cosY = -(dz / lXZ);
float sinX = (dy / XYZ);
float cosX = (lXZ / XYZ);
float sinZ = 0.0f;
float cosZ = 1.0f;
DXDXMATRIX dmRot, dmRotX, dmRotY, dmRotZ,
dmMov, dmView;
dmRotZ._11= cosZ ,dmRotZ._12= -sinZ ,dmRotZ._13= 0.0f ,dmRotZ._14= 0.0f;
dmRotZ._21= sinZ ,dmRotZ._22= cosZ ,dmRotZ._23= 0.0f ,dmRotZ._24= 0.0f;
dmRotZ._31= 0.0f ,dmRotZ._32= 0.0f ,dmRotZ._33= 1.0f ,dmRotZ._34= 0.0f;
dmRotZ._41= 0.0f ,dmRotZ._42= 0.0f ,dmRotZ._43= 0.0f ,dmRotZ._44= 1.0f;
dmRotY._11= cosY ,dmRotY._12= 0.0f ,dmRotY._13= -sinY ,dmRotY._14= 0.0f;
dmRotY._21= 0.0f ,dmRotY._22= 1.0f ,dmRotY._23= 0.0f ,dmRotY._24= 0.0f;
dmRotY._31= sinY ,dmRotY._32= 0.0f ,dmRotY._33= cosY ,dmRotY._34= 0.0f;
dmRotY._41= 0.0f ,dmRotY._42= 0.0f ,dmRotY._43= 0.0f ,dmRotY._44= 1.0f;
dmRotX._11= 1.0f ,dmRotX._12= 0.0f ,dmRotX._13= 0.0f ,dmRotX._14= 0.0f;
dmRotX._21= 0.0f ,dmRotX._22= cosX ,dmRotX._23= -sinX ,dmRotX._24= 0.0f;
dmRotX._31= 0.0f ,dmRotX._32= sinX ,dmRotX._33= cosX ,dmRotX._34= 0.0f;
dmRotX._41= 0.0f ,dmRotX._42= 0.0f ,dmRotX._43= 0.0f ,dmRotX._44= 1.0f;
dmMov._11= 1.0f ,dmMov._12= 0.0f ,dmMov._13= 0.0f ,dmMov._14= 0.0f;
dmMov._21= 0.0f ,dmMov._22= 1.0f ,dmMov._23= 0.0f ,dmMov._24= 0.0f;
dmMov._31= 0.0f ,dmMov._32= 0.0f ,dmMov._33= 1.0f ,dmMov._34= 0.0f;
dmMov._41= -X ,dmMov._42= -Y ,dmMov._43= -Z ,dmMov._44= 1.0f;
dmRotX = dmRotZ * dmRotX;
dmRot = dmRotY * dmRotX;
dmView = dmMov * dmRot;