我正在尝试对人进行模拟,我想做的一件事是模拟个人空间缓冲区。为此,我需要检查一个点pt1
,看它是否需要被另一点击退pt2
。我想要对双曲线的阻力进行缩放,例如pt1
确保在小距离内力不会达到无穷大。1 / (distance + 1)
+1
我已经弄清楚了大部分,但我不知道如何获得一个力向量,它是相对于pt1
它的力的归一化向量。这里有擅长矢量数学的人可以帮助我吗?谢谢!
我正在尝试对人进行模拟,我想做的一件事是模拟个人空间缓冲区。为此,我需要检查一个点pt1
,看它是否需要被另一点击退pt2
。我想要对双曲线的阻力进行缩放,例如pt1
确保在小距离内力不会达到无穷大。1 / (distance + 1)
+1
我已经弄清楚了大部分,但我不知道如何获得一个力向量,它是相对于pt1
它的力的归一化向量。这里有擅长矢量数学的人可以帮助我吗?谢谢!
不确定我是否正确理解了您的问题,但我假设:您有一个点列表,假设在一组坐标对中:
[[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 点的“力”。