在标准化两个 3D 点之间的距离时遇到问题

问题描述 投票:0回答:0

我有两个 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;

有人能帮我解决这个问题吗?

谢谢!

c++ graphics distance angle particle-system
© www.soinside.com 2019 - 2024. All rights reserved.