我已经在这个工作了一个小时,但是无法得到它。
我有一个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;
}
我无法发现任何差异
答案 0 :(得分:9)
第一行设置this.x
的值,当你真正想要的是this.x
的原始值时,它会在第二行中使用。第二个版本可以正常工作,因为您不会更改this.x
。