绘制几个3D半空间的交点?

时间:2018-02-18 12:37:33

标签: python matplotlib 3d scipy

我有许多(5到50之间)3D线性不等式(例如,matplotlib),每个都在3D中定义了一个半空间。

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

这个图书馆有用吗? applymap。该示例使用2D图和matplotlib,对3D private drawChart(data:any){ console.log(data); this.layersBar = this.layersBarArea.selectAll('.layer') .data(data) .enter() .append('g') .classed('layer', true) .style('fill', (d:any,i:any)=>{ return this.colors[i] }); this.x.domain(this.stackedChart.map((d:any)=>{ return d.date })); this.y.domain([0, +d3.max(this.stackedSeries, function(d:any){ return d3.max(d, (d:any)=>{ return d[1] }) })]); this.layersBar.selectAll('rect') .exit() .remove() .data((d:any)=>{ return d; }) .enter() .append('rect') .attr('y', (d:any)=>{ return this.y(d[1]) }) .attr('x', (d:any, i:any)=>{ return this.x(d.data.date) }) .attr('width', this.x.bandwidth()) .attr('height', (d:any, i:any)=>{ return this.y(d[0]) - this.y(d[1]); }) } } 图感兴趣。

1 个答案:

答案 0 :(得分:1)

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