如何将坡度转换为度数,反之亦然?

时间:2013-02-13 17:22:30

标签: java math degrees projectile

我正在制作一个游戏,你有一个精灵向鼠标方向发射子弹。到目前为止,它与1子弹一起工作正常。我有这种获得斜率的方法,然后将矢量标准化:

    public static Vector2f getSimplifiedSlope(Vector2f v1, Vector2f v2) {
    Vector2f result = new Vector2f(v2.x - v1.x, v2.y - v1.y);
    float length = (float)Math.sqrt(result.x * result.x + result.y * result.y);

    return new Vector2f(result.x / length, result.y / length);
}

然而,现在我正在制造一把霰弹枪,发射几颗子弹,带有“传播”。我的计划是,我将采用基准斜率,将其转换为度数,添加或减去一对以创建偏差,然后将度数转换回斜率,并将其传递给子弹。

但是,我不知道该怎么做。如果有人能告诉我如何将2D斜率转换为度数,那就太好了,反之亦然。

提前致谢!

3 个答案:

答案 0 :(得分:4)

最简单的方法是使用三角法Math.atan2以弧度计算角度,使用Math.toDegrees将其转换为度数,执行调整,使用Math.toRadians将其转换回弧度,然后使用三角法Math.tan将弧度值转换回斜率。您需要注意从tan方法返回的潜在无限斜率。

以下是Math类的Javadocs

答案 1 :(得分:0)

使用Math.atan2(),并记住结果是弧度,而不是

答案 2 :(得分:0)

Math.atan2()会执行此操作,并以弧度为单位提供结果。

  

返回直角坐标转换的角度θ   (x,y)到极坐标(r,theta)。该方法计算相位   θ通过计算-pi到pi的范围内的y / x的反正切。

Math.toDegrees()将执行你的弧度/度数转换。