【问题标题】:Convert an Int value to an angle将 Int 值转换为角度
【发布时间】:2023-03-27 11:44:01
【问题描述】:

如何将 Int 值转换为角度。

 int speed = remoteService.getSpeed();

我从远程服务获取速度值,我想将其转换为角度。

我该怎么做?有什么想法吗?

【问题讨论】:

  • 哪种角度或者什么角度!!你对此有什么想法吗?
  • 我的程序中有一个速度表,我想根据速度值设置指针,如果速度值为30,那么我应该在速度表中显示它
  • 所以,这意味着你需要显示图像?? (或其他)
  • 不,我有一个速度计图像和指针设置在 60 的水平位置,我想根据速度值更改指针位置。我在文本视图中获取速度值并每 1 秒更新一次。所以如果速度值发生变化,针应该根据那个改变它的位置
  • 针图默认设置为60,需要根据int值旋转

标签: android int angle data-conversion


【解决方案1】:

public void getGenginePos(int state,float force, double AOD){ 双 AODrad=(AOD*0.017444);

   switch(state){
       case BOAT_IDLE:
                //System.out.println("Before Vx = " + vx + ", vy = " + vy + ", f = " + force + ", AOD = " + AOD);
                vx = (float)(force * Math.cos(AODrad));
                px = px + (vx * dt);
                vy = (float) (force * Math.sin(AODrad));
                //System.out.println("After Vx = " + vx + ", vy = " + vy);

                py = py - (vy * dt);

                break;
        case BOAT_ACCEL:
                temp = force *dt;
                vx = (float) (force * Math.cos(AODrad) + temp);//(force * dt));
                vy = (float) (force * Math.sin(AODrad) + temp);//(force * dt));
                px = px + (vx * dt);
                py = py - (vy * dt);
                break;
        case BOAT_DECEL:
                temp = force *dt;
                vx = (float) (force * Math.cos(AODrad) - temp);//(force * dt));
                vy = (float) (force * Math.sin(AODrad) - temp);//(force * dt));
                px = px + (vx * dt);
                py = py - (vy * dt);
                break;
       default: break;

   }
}

public void setMeterPos(int rpx,int rpy,int epx,int epy){
   RefX= rpx;
   RefY= rpy;

   EndX = epx;
   EndY = epy;

   screenwidth=BoatRider.screenWidth;
   screenheight=BoatRider.screenHeight;
}

public void setArrowEndX(int x){
    EndX = x;
}
public void setArrowEndY(int y){
    EndY = y;
}
public float getArrowEndX(){
    return EndX;
}

public float getArrowEndY(){
    return EndY;
}

public void getGMeterArrowPos(double AOD,float radius){
    double AODrad=(AOD*0.017444);
    vx=(float)(radius*Math.cos(AODrad));
    vy=(float)(radius*Math.sin(AODrad));

    float height=screenheight-RefY;

    EndX = vx+RefX;
    EndY=screenheight-(vy+height);

}

public float getBorderEndX(){
   return EndX;
}
public float getBorderEndY(){
    return EndY;
}
public void getGBoatBorderPos(double AOD,float radius,float boderRefX,float boderRefY){
    double AODrad=(AOD*0.017444);
    vx=(float)(radius*Math.cos(AODrad));
    vy=(float)(radius*Math.sin(AODrad));

    float height=screenheight-boderRefY;

    EndX = vx+boderRefX;
    EndY=screenheight-(vy+height);

}

} 会很有用的

【讨论】:

  • 它的基本速度计代码我在开发游戏时使用它
【解决方案2】:
int speed = 90;
double degrees = speed ;
double angle = degrees * 2 * Math.PI / 360.0;

或者你可以使用

int speed = 30;
 double degrees = speed;
 double toDegree = Math.toDegrees(radians);

【讨论】:

  • 这有什么帮助?
  • 感谢您的回复,我们如何将此角度设置为我用于速度计的位图图像(针)?这样针会根据速度移动
猜你喜欢
  • 2017-01-21
  • 2017-02-24
  • 2021-11-04
  • 1970-01-01
  • 2015-04-30
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多