簡単な使い方で簡単な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;
}
両方のベクトルを座標に変換してから三角関数に戻しますが、これらは非常に低速であり、この方法は非常に頻繁に使用されます。
より良い方法はありますか?