java - 基于水平和垂直速度计算方向和速度

标签 java point angle direction

我目前正在用Java开发一个游戏,我想根据所有游戏对象提供的水平和垂直速度来计算方向和定向速度。我想要一种像下面这样的方法来计算物体移动的方向/角度(基于它的水平和垂直速度);

public double getAngle() {
    // Calculate angle/direction from the horizontal and vertical speed here
    return angle;
}

当然,我需要一个类似的方法来根据对象的水平和垂直速度计算其方向速度。

注意:当我问这个问题时,我没有学到任何关于几何/三角学的知识,因为我在二年级或三年级。

最佳答案

Solution by Tim Visee :

<小时/>

这是我在测试了一些东西后发现的解决方案。 我制作了三个函数,前两个可用于根据垂直和水平速度计算角度和速度。第三个函数可用于根据角度和速度计算水平和垂直速度。

public static double getAngle(double vx, double vy) {
    return Math.toDegrees(Math.atan2(vy, vx));
}

public static double getVelocityWithAngle(double vx, double vy) {
    return Math.sqrt(Math.pow(vx, 2) + Math.pow(vy, 2));
}

public static void angleVelocityToXYVelocity(double angle, double velocity) {
    double vx = Math.cos(Math.toRadians(angle)) * velocity;
    double vy = Math.sqrt(Math.pow(velocity, 2) - Math.pow(vx, 2));

    System.out.println("vx: " + vx + " vy: " + vy);
}

请注意,第三个函数将结果打印到控制台,因为它返回两个值。

关于java - 基于水平和垂直速度计算方向和速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760950/

相关文章:

Java游戏开发——看鼠标坐标射击

java - 使用 Morphia 从 Mongo 获取文档时将值设置为非 DB 属性

c++ - 如何使用半空间测试确定一个点是在线段的前面还是后面?

java - 据说“之前”方法未定义 - spark java

math - 具有 "front"向量的直线/平面的有符号距离的函数?

algorithm - 六边形网格,你如何找到一个点在哪个六边形中?

javascript - 如何在 JavaScript 中将鼠标点对齐到一个 Angular

c++ - 在一组坐标中找到一个正方形

java - 为什么是 "when a thread invokes d.wait, it must own the intrinsic lock for d"?

java - 将 json 插入谷歌电子表格