我正在使用简单的用法制作一个简单的 Vector 类,所以我不想为我自己可以做的事情导入整个库(如 JScience ...)。
目前我已经制作了这段代码:
public void add(Vector2D v){
double ang = this.angle*Math.PI/180;
double mag = this.magnitude;
double ang0 = v.angle*Math.PI/180;
double mag0 = v.magnitude;
//vector to coordinates
double x1 = mag*Math.cos(ang);
double y1 =-mag*Math.sin(ang);
//adding the other vector's coordinates
double x2 =x1+mag*Math.cos(ang0);
double y2 =y1-mag*Math.sin(ang0);
//back to vector form
double newMagnitude = Math.sqrt(x2*x2+y2*y2);
double newAngle = Math.atan2(y2,x2);
this.magnitude = newMagnitude;
this.angle = newAngle;
}
它将两个向量都转换为坐标,然后用三角函数返回,但是这些非常慢,并且该方法将被非常频繁地使用。
有没有更好的办法?