python - 绘制几个 3D 半空间的交集?

标签 python matplotlib 3d scipy

我有许多(5 到 50 之间)3D 线性不等式(例如,2x + 3y - z >= 2),每个不等式都在 3D 中定义一个半空间。

我需要在特定的 3D 区域中绘制由这些半空间相交形成的多面体(将具有无限体积)。只需绘制多面体的边界面就足够了。

这个库有用吗? scipy.spatial.HalfspaceIntersection 。该示例使用 2D 绘图和 matplotlib,对 3D matplotlib 绘图感兴趣。

最佳答案

最简单的方法是使用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])

输出:

enter image description here

关于python - 绘制几个 3D 半空间的交集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48851764/

相关文章:

python - 如何通过 HTTP 发送二进制 post 数据?

Python 从配置文件中删除一个字符串

python - PsychoPy 实验期间的屏幕截图

python-3.x - matplotlib.pyplot plot_date 函数在 cftime.datetime 对象上中断

c++ - 3D vector 的角度 - 获得两者

根据条件值包含或排除字符串的一部分的 Pythonic 方法

python - pyqt5 应用程序中的 matplotlib 工具栏

python - 如何使用Python绘制模拟几何随机变量的直方图?

html - 将带有线框的 3D 表面从 R 导出到 HTML

3d - 如何为 3D 渲染写一个 "material module"?