简单飞机吧 关注:26,748贴子:957,150
  • 6回复贴,共1

矩阵坐标变换的自瞄火炮问题

只看楼主收藏回复

这两年玩了大佬们的自瞄炮,自己也一直想搞一个。所以最近在做一个使用矩阵坐标变换方法的自瞄火炮。
但是目前遇到一个问题不知如何处理,或者或许是我方法有误。
目前我将目标相对于驾驶舱的三个坐标参数通过旋转矩阵转化到相对于驾驶舱的坐标系上了,但是这个时候重力加速度相对驾驶舱坐标系就不是竖直向下的了。
想请教一下大家是如何解决的


IP属地:江苏来自Android客户端1楼2024-01-24 20:47回复


    IP属地:广东来自Android客户端2楼2024-01-25 13:04
    回复
      还有就是矩阵坐标变换后x、y、z的±号和值一直不太对,但是已经全部转成右手系了。不知道怎么搞


      IP属地:江苏来自Android客户端3楼2024-01-25 17:45
      回复
        变换之前就把重力加速度和提前量考虑上呗,事后再变换坐标然后直接输入就行了


        IP属地:河南来自Android客户端4楼2024-01-30 14:42
        收起回复
          <Setter variable="X0" function="Activate7?sin(TargetHeading)*cos(TargetElevation)*TargetDistance:sin(InputYaw)*cos(InputVTOL)" priority="0" activator="7" />
          <Setter variable="Y0" function="Activate7?cos(TargetHeading)*cos(TargetElevation)*TargetDistance:cos(InputYaw)*cos(InputVTOL)" priority="0" activator="7" />
          <Setter variable="Z0" function="Activate7?sin(TargetElevation)*TargetDistance:sin(InputVTOL)" priority="0" activator="7" />
          <Setter variable="X1" function="X0+rate(X0)*t*clamp01(Activate7)" priority="0" />
          <Setter variable="Y1" function="Y0+rate(Y0)*t*clamp01(Activate7)" priority="0" />
          <Setter variable="Z1" function="Z0+rate(Z0)*t*clamp01(Activate7)+4.9*pow(t,2)*clamp01(Activate7)" priority="0" />
          <Setter variable="t" function="clamp(sqrt(pow(X1,2)+pow(Y1,2)+pow(Z1,2))/1250,0,63.7755102)+TargetDistance/8750" priority="0" />
          <Setter variable="X2" function="sin(deltaangle(atan(X1/Y1),Heading))*sqrt(pow(X1,2)+pow(Y1,2))*sign(Y1)" priority="0" />
          <Setter variable="Y2" function="cos(deltaangle(atan(X1/Y1),Heading))*sqrt(pow(X1,2)+pow(Y1,2))*sign(Y1)" priority="0" />
          <Setter variable="Z2" function="Z1" priority="0" />
          <Setter variable="X3" function="X2" priority="0" />
          <Setter variable="Y3" function="cos(deltaangle(atan(Z2/Y2),PitchAngle))*sqrt(pow(Z2,2)+pow(Y2,2))*sign(Y2)" priority="0" />
          <Setter variable="Z3" function="sin(deltaangle(atan(Z2/Y2),PitchAngle))*sqrt(pow(Z2,2)+pow(Y2,2))*sign(Y2)" priority="0" />
          <Setter variable="X4" function="cos(deltaangle(atan(Z3/X3),RollAngle))*sqrt(pow(Z3,2)+pow(X3,2))*sign(X3)" priority="0" />
          <Setter variable="Y4" function="Y3" priority="0" />
          <Setter variable="Z4" function="sin(deltaangle(atan(Z3/X3),RollAngle))*sqrt(pow(Z3,2)+pow(X3,2))*sign(X3)" priority="0" />
          <Setter variable="FLY" function="Activate7?(TargetSelected?atan(X4/(Y4+1.75))+180*sign(X4)*clamp01(Y4&lt;-1.75):0):(Activate5?atan(X4/Y4)+180*sign(X4)*clamp01(Y4&lt;0):0)" priority="0" />
          初四的时候写的


          IP属地:河南来自Android客户端5楼2024-01-30 14:44
          收起回复