问题是关于这个相当基本的操作的最健壮和最快的实现:
给定一个向量 (X,Y),计算给定长度 desiredLength 的共线向量。至少有两种方法:
一。求 (X,Y) 的长度并相应地重新缩放:
double currentLength = sqrt(X*X + Y*Y);
if(currentLength == 0) { /* Aye, Caramba! */ }
double factor = desiredLength / currentLength;
X *= factor;
Y *= factor;
二。求 (X,Y) 的方向并在该方向形成一个所需长度的向量:
if(X == 0 && Y == 0) { /* Aye, Caramba! */ }
double angle = atan2(Y, X);
X = desiredLength * cos(angle);
Y = desiredLength * sin(angle);
哪种方法更适合开发健壮的应用程序、更好的数值稳定性、更快的执行等等?