Python 如何使用numpy满足布料模拟的约束条件
我正在尝试使用python+numpy编写布料模拟 我有一个使用python和循环的工作布料模拟。然而,numpy版本并没有像预期的那样工作。 tmp是按边顶点排序的顶点位置数组。 |边1.点a |边1.点b |边2.点a |边2.点bPython 如何使用numpy满足布料模拟的约束条件,python,numpy,Python,Numpy,我正在尝试使用python+numpy编写布料模拟 我有一个使用python和循环的工作布料模拟。然而,numpy版本并没有像预期的那样工作。 tmp是按边顶点排序的顶点位置数组。 |边1.点a |边1.点b |边2.点a |边2.点b pos1 = tmp[::2] pos2 = tmp[1::2] delta = pos2-pos1 deltaLen = np.linalg.norm(delta, axis=1) f = (delta.T *
pos1 = tmp[::2]
pos2 = tmp[1::2]
delta = pos2-pos1
deltaLen = np.linalg.norm(delta, axis=1)
f = (delta.T * (deltaLen - 0.2)).T * self.k
tmp[::2] += f
tmp[1::2] -= f
这是查看链接对之间距离的片段,然后设置新距离
我已经包括了一个运行模拟的网格图像,目标是使所有边的长度为0.2,起始长度为0.25
代码可以在数组中循环,但不能在numpy中循环
是因为你的切片长度不同吗
import numpy as np
tmp = np.random.rand(7)
pos1 = tmp[::2]
pos2 = tmp[1::2]
print(pos1.shape, pos2.shape)
>>> (4,) (3,)
# make array slice same length
pos1 = tmp[:-1:2]
pos2 = tmp[1::2]
print(pos1.shape, pos2.shape)
>>> (3,) (3,)
“但是numpy版本并没有像预期的那样工作。”如果你提供更多细节,别人会更容易帮助你。你得到了什么输出?你期望得到什么?另外,如果您有可以处理循环的代码,那么您应该在问题中包含该代码,以便读者可以清楚地看到预期的行为是什么。事实并非如此,但感谢您的建议。我将更新问题的具体内容。问题是使用numpy数组ops只访问一次索引,我需要的是ufunc.at多次访问索引。