-1

我正在尝试对人进行模拟,我想做的一件事是模拟个人空间缓冲区。为此,我需要检查一个点pt1,看它是否需要被另一点击退pt2。我想要对双曲线的阻力进行缩放,例如pt1确保在小距离内力不会达到无穷大。1 / (distance + 1)+1

我已经弄清楚了大部分,但我不知道如何获得一个力向量,它是相对于pt1它的力的归一化向量。这里有擅长矢量数学的人可以帮助我吗?谢谢!

4

1 回答 1

0

不确定我是否正确理解了您的问题,但我假设:您有一个点列表,假设在一组坐标对中:

[[x0, y0], [x1, y1], [x2, y2], ... [xn, yn]]

然后,如果您需要计算点 #k 上的合力矢量,您需要:

force_vector = [0, 0]
for i from 0 to n:
    skip if i = k
    x_force = xk - xi
    y_force = yk - yi
    // Resulting force vector for i-k pair will be aligned as [x_force, y_force]
    // we just need to normalize it
    vector_modulo = square_root(x_force^2 + y_force^2)
    normalized_vector = [x_force/vector_modulo, y_force/vector_modulo]
    dist_ik = square_root((xk-xi)^2 + (yk - yi)^2)
    force_vector[0] += normalized_vector[0]/(dist_ik + 1)
    force_vector[1] += normalized_vector[1]/(dist_ik + 1)        

最后,您将拥有 force_vector,其中 x 和 y 值为 #k 点的“力”。

于 2013-06-07T09:49:09.557 回答