在Java中的Vector2d类中旋转

时间:2011-03-06 00:08:45

标签: java vector rotation

我已经在这个工作了一个小时,但是无法得到它。

我有一个Vector2d类:

public class Vector2d
{
    public double x = 0.0;
    public double y = 0.0;

    ....
}

这个vector类有一个rotate()方法,这会给我带来麻烦。

第一个片段似乎使x和y值越来越小。第二个工作正常!我在这里错过了一些简单的东西吗?

public void rotate(double n)
{
    this.x = (this.x * Math.cos(n)) - (this.y * Math.sin(n));
    this.y = (this.x * Math.sin(n)) + (this.y * Math.cos(n));
}

这有效:

public void rotate(double n)
{
    double rx = (this.x * Math.cos(n)) - (this.y * Math.sin(n));
    double ry = (this.x * Math.sin(n)) + (this.y * Math.cos(n));
    x = rx;
    y = ry;
}

我无法发现任何差异

1 个答案:

答案 0 :(得分:9)

第一行设置this.x的值,当你真正想要的是this.x的原始值时,它会在第二行中使用。第二个版本可以正常工作,因为您不会更改this.x