0

我正在尝试编写一种方法,该方法允许我的角斗士在两者之间旋转一个中心点,可以说是相互环绕。下面是我的代码。角斗士变量目标是角斗士类型,设置为轮换中的第二方。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 是请求的旋转量。

4

1 回答 1

1

一个问题是您使用度数,而诸如cosetc... 之类的数学函数使用弧度。

于 2013-06-07T03:11:53.087 回答