为什么角度不规则

问题描述 投票:-1回答:1

我在数学上有问题。我正在Android Studio的坦克游戏中工作,想计算射击的轨迹。为此,我实现了一个小应用程序,在该应用程序中,我尝试从0到360的每个天使查看镜头所在的目录。所以我遍历了360个角度,并以相同的开始速度并同时放置了每个角度,并使用计算出的x和y Posistion在该布局中添加了一个角度为texview的内容。我期望一个从1到360的圆。但是角度不是规则的。这是代码

public class MainActivity extends AppCompatActivity {
    private RelativeLayout layout;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        layout = findViewById(R.id.layout);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        shot( );
    }

    public void shot() {

            for(int winkel = 0;angle<360;winkel++) {
                TextView textView = new TextView(this);
                textView.setText(""+angle);
                textView.setTextSize(10);
                int i = 10;
                int power = 50;
                System.out.println(angle);
                textView.setX((float) (500+(power * Math.cos(angle) * i)));
                textView.setY(((float) (0-((power * Math.sin(angle) * i) - (0.5 * 9.81 * Math.pow(i, 2))))));
                //System.out.println((float) ((((power * Math.sin(angle) * i) - (0.5 * 9.81 * Math.pow(i, 2))))));
                layout.addView(textView);

            }

    }
}

力量代表开始速度,我代表我停止射击的时间。这是计算x / y位置的两个公式

  • SX方向=功率·cos(角度)·i
  • [SY方向=功率·sin(角度)·i + 0,5·-g·i2

输出应该是一个由从0到360的数字组成的圆,但是小数是完全随机的为什么?

java android math
1个回答
1
投票

数学函数始终以弧度而不是度数工作。这意味着您必须在调用Math.cosMath.sin之前转换角度:

Math.cos(angle / 180 * Math.PI)
Math.sin(angle / 180 * Math.PI)

它们看起来很随意,因为您当前正在使用360弧度,您已经绕了60圈,并且数字在这60圈中交错。

© www.soinside.com 2019 - 2024. All rights reserved.