Я пытаюсь построить электрическое векторное поле, которое принимает введенную пользователем геометрию провода и выводит трехмерное поле на трехмерной сетке, которую я создал с помощью сетки.
# get_field returns a single list [i,j,k] of the field vector evaluated at the input point [x,y,z]
# Create grid to evaluate field at points
xx, yy, zz = np.meshgrid(np.arange(minX, maxX, spacing),
np.arange(minY, maxY, spacing),
np.arange(minZ, maxZ, spacing))
# Evaluate field at points
field = get_field([xx,yy,zz])
# Plot
ax.quiver(xx, yy, zz, field, length=1)
plt.show()
У меня проблемы с отображением каждого вектора направления [i,j,k]
в массив или список для построения
EDIT
Я вернулся к грубому принуждению.
xx = np.arange(self.minX, self.maxX, spacing)
yy = np.arange(self.minY, self.maxY, spacing)
zz = np.arange(self.minZ, self.maxZ, spacing)
u = []
v = []
w = []
for x in xx:
for y in yy:
for z in zz:
# get_field returns a single list [i,j,k] of the field vector evaluated at the input point [x,y,z]
field = get_field([x, y, z])
u.append(field[0])
v.append(field[1])
w.append(field[2])
u = np.asarray(u)
v = np.asarray(v)
w = np.asarray(w)
plt_ax.quiver(xx, yy, zz, u, v, w, length=1, normalize=True)
Я думал, что эта реализация, по крайней мере, будет работать (плохо), но теперь я получаю сообщение об ошибке, даже если есть достаточно точек, чтобы соответствовать размерам xx, yy, zz.
ValueError: shape mismatch: objects cannot be broadcast to a single shape