我有两个 3D 点,我正在尝试获取它们之间的距离。这些点位于 -1.0 到 1.0 的范围内,0,0 是屏幕的中心。
我知道计算距离的方法是:distance = sqrt(dx * dx + dy * dy + dz * dz);
但我无法将它们归一化为 0-1,我想是因为涉及负数?
我正在尝试计算粒子与吸引子的距离。我正在尝试对距离进行归一化,以便我知道距离为 0 时,它已经到达吸引子,我可以让它停止移动。
这是我的代码片段。吸引子是吸引子的位置。 pos 是粒子位置。 curtime 是递增粒子的时间因子。 attractorint 是吸引力的强度。真的,一切正常,但我需要能够知道粒子何时到达吸引子,这就是为什么我试图标准化它的距离。
float dx = attractorx - posx;
float dy = attractory - posy;
float dz = attractorz - posz;
float distance = sqrt(dx * dx + dy * dy + dz * dz);
float forceX = dx / distance;
float forceY = dy / distance;
float forceZ = dz / distance;
float force = curtime * attractorint;
posx += force * forceX;
posy += force * forceY;
posz += force * forceZ;
有人能帮我解决这个问题吗?
谢谢!