我有对象A,速度很快。速度被指定为 3D 矢量a = (x, y, z)
。位置是 3D 点A [X, Y, Z]
。我需要找出当前速度是否将该对象引向 position 上的另一个对象B [X, Y, Z]
B。
我已经成功地在二维中实现了这一点,忽略了第三个:
/*A is projectile, B is static object*/
//entity is object A
// - .v[3] is the speed vector
//position[3] is array of coordinates of object B
double vector[3]; //This is the vector c = A-B
this->entityVector(-1, entity.id, vector); //Fills the correct data
double distance = vector_size(vector); //This is distance |AB|
double speed = vector_size(entity.v); //This is size of speed vector a
float dist_angle = (float)atan2(vector[2],vector[0])*(180.0/M_PI); //Get angle of vector c as seen from Y axis - using X, Z
float speed_angle = (float)atan2((double)entity.v[2],entity.v[0])*(180.0/M_PI); //Get angle of vector a seen from Y axis - using X, Z
dist_angle = deg180to360(dist_angle); //Converts value to 0-360
speed_angle = deg180to360(speed_angle); //Converts value to 0-360
int diff = abs((int)compare_degrees(dist_angle, speed_angle)); //Returns the difference of vectors direction
我需要创建完全相同的比较以使其在 3D 中工作 - 现在,忽略 Y 位置和 Y 矢量坐标。
我应该怎么计算才能得到第二个角度?
根据答案进行编辑
:
我正在使用球坐标并比较它们的角度来检查两个向量是否指向同一方向。一个向量是 AB,另一个是 A 的速度,我正在检查 id A 正在前往 B。