绘制多个3D半空间的交集?

1 投票
1 回答
1070 浏览
提问于 2025-05-18 21:17

我有一些三维线性不等式(大概在5到50个之间),比如说 2x + 3y - z >= 2,每一个不等式都定义了一个三维空间中的半空间。

我需要在特定的三维区域中绘制这些半空间交叉形成的多面体(这个多面体的体积会是无限的),只需要绘制多面体的边界表面就可以了。

这个库会有用吗? scipy.spatial.HalfspaceIntersection。这个例子使用的是二维图形和 matplotlib,我想要的是三维的 matplotlib 图。

相关问题:

  • 暂无相关问题
暂无标签

1 个回答

3

最简单的方法是使用 mayavi.mlab.contour3d() 这个函数:

import numpy as np
from mayavi import mlab

X, Y, Z = np.mgrid[-50:50:100j, -50:50:100j, -50:50:100j]

V = ((2 * X + 3 * Y - Z >= 2) & 
     (4 * X - 2 * Y + Z <= 10) &
     (X + Y + Z >= 1)).astype(float)

mlab.contour3d(X, Y, Z, V, contours=[0.5])

输出结果是:

这里插入图片描述

撰写回答