matplotlib无法正确显示三维平面的交点

2024-10-01 15:45:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想画两个平面,找出它们的相交线,但我得到的结果是,不可能分辨出它们在哪里相交,因为一个平面覆盖另一个平面。在

三维投影应该隐藏平面的不可见部分,如何使用matplotlib实现这个结果?在

planes

你可以清楚地看到这些平原应该相交。在

plane intersect

这是我用来得到这个结果的代码

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

values = range(-10, 11)

def plotPlane(plot, normal, d, values, colorName):
    # x, y, z
    x, y = np.meshgrid(values, values)
    z = (-normal[0] * x - normal[1] * y - d) * 1. / normal[2]

    # draw plot
    plot.plot_surface(x, y, z, color=colorName)

image = plt.figure().gca(projection='3d')

plotPlane(image, [3, 2, -4], 1, values, "red")
plotPlane(image, [5, -1, 2], 4, values, "gray")

plt.show()

Tags: 代码imageimportnumpyplotmatplotlibasnp
1条回答
网友
1楼 · 发布于 2024-10-01 15:45:33

请参阅How to draw intersecting planes?以获取详细解释和可能的解决方法。在

matplotlib的3D支持的简单答案是巧妙地使用投影生成3D对象的2D视图,然后将其渲染到画布上。由于matplotlib渲染的方式(一次一个艺术家),一个艺术家要么完全高于另一个艺术家,要么完全低于另一个艺术家。如果您需要真正的3D支持,请查看mayavi。在

相关问题 更多 >

    热门问题