如何在 3 维而不是 2D 中完成此操作



我想知道如何将物体从 A 点移动到 B 点一小段距离。
我知道它是如何在 2D 中完成的,但 3d 肯定有点不同。
这是我如何在 2D 中执行此操作的一些代码。

Vector pointA = ccp(1,1);
Vector pointB = ccp(10,10);
//find angle between the two points
float diffX = pointA.x - pointB.x;
float diffY = pointA.y - pointB.y;
float angle = atan2f(diffX, diffZ);
angle -= CC_DEGREES_TO_RADIANS(90);
float dis = 1.5;//how far away this should extend from the last particle
float x = -cosf(angle)*dis;
float y = sinf(angle)*dis;
object.position = ccp(object.position.x+x,object.position.y+y);

使用该代码,我可以成功地将对象向 Point B 移动 1.5 的距离。

但我只是找不到如何在 3 维中做到这一点。
所以我的问题是如何在 3D 中完成此操作?

呃,我认为你不需要计算角度。只需规范化间隙并移动即可。

Vector pointA = Vector(1,1,1);
Vector pointB = Vector(10,10,10);
Vector gap = pointB - pointA;
// This code can occur division-by-zero error.
Vector dir = gap / sqrt(gap.x * gap.x + gap.y * gap.y + gap.z * gap.z); 
float dist = 1.5;
object.position += dir * dist;

相关内容

  • 没有找到相关文章

最新更新