java - 找出绕圆周移动所需的位置变化

标签 java math methods geometry

我正在尝试编写一种方法,允许我的角斗士在两者之间旋转中心点,可以说是相互环绕。下面是我的代码。角斗士变量目标是角斗士类型,并设置为轮换中的第二方。 center[0] 是 x 位置,center[1] 是 y 位置。

    public void rotate(Gladiator a, int angle) {
    double x1;
    double y1;
    double x2;
    double y2;
    double r;
    double midx;
    double midy;
    int currentAngle2;
    int currentAngle;

    r = getDistance(a,a.target)/2;
    midx = (a.center[0]-a.target.center[0])/2;
    midy = (a.center[1]-a.target.center[1])/2;
    currentAngle = (int)Math.atan2(a.center[1] - midy, a.center[0] - midx);

    currentAngle2 = currentAngle + 180;
    if (currentAngle2 > 360) {
    currentAngle2 = currentAngle2-360;      
    }
    System.out.println("Current angles = "+currentAngle+","+currentAngle2);

    x1 = Math.cos(currentAngle+angle) * r + midx;
    y1 = Math.sin(currentAngle+angle) * r + midy;
    x2 = Math.cos(currentAngle2+angle) * r + midx;
    y2 = Math.sin(currentAngle2+angle) * r + midy;
    System.out.println("new coords: "+(int)x1+","+(int)y1+","+(int)x2+","+(int)y2);
    a.move((int)x1,(int)y1);
    a.target.move((int)x2,(int)y2);


    }

这里有什么问题吗?第一次运行时,它们最终会叠在一起。

编辑:

angle 是请求的旋转量。

最佳答案

一个问题是您使用的是度数,而数学函数如 cos等等...使用弧度。

关于java - 找出绕圆周移动所需的位置变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16975631/

相关文章:

python - 使用加权多点定位寻找未知点

java - selenium 中的desire 功能和Firefox 选项之间的主要区别是什么

javascript - 在javascript中计算旋转矩形的中点

java - Android 什么时候可以释放端口?

algorithm - 从每条边中选择一个顶点

ruby - 这个 #divmod 方法正在做什么来输出这个结果?

java - 纵向打印数组 : java

类似于 C# 中的 Java 方法事件回调

基于 Java 的表达式计算器

java - 继承类型转换编译错误