Вращение в классе Vector2d в Java - PullRequest
0 голосов
/ 06 марта 2011

Я работал над этим в течение часа, просто не могу его получить.

У меня есть класс Vector2d:

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

    ....
}

Этот векторный класс имеет rotate ()метод, который вызывает у меня проблемы.

Первый фрагмент, кажется, делает значения х и у все меньше и меньше.Второй работает просто отлично!Я что-то упускаю здесь просто?

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 Ответ

9 голосов
/ 06 марта 2011

В первой строке задается значение this.x, которое затем используется во второй строке, когда действительно требуется исходное значение this.x. Вторая версия работает нормально, потому что вы не изменяете this.x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...