我将一个平面拟合到 3d 中的一堆点,最初使用 np.meshgrid 给它一个任意大小,但现在我试图绘制一个以该平面为中心并以相同方式定向的圆柱体(这样平面拟合会切割圆柱体的高度减半),但具有指定的半径和高度。我能找到的在 matplotlib 中绘制的圆柱体的唯一示例是空心的,并且通常在顶部和底部打开。我希望我绘制的那个是实心的,这样我就可以清楚地看到它包含哪些点。
这是一个随机生成平面的最小工作示例。由于我使用的平面总是由一个点和一个法向量给出,圆柱体也应该基于这些东西(加上提供的半径和在平面上方和下方延伸的高度)。
from __future__ import division #Enables new-style division
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import seaborn as sns
import numpy as np
cen_x = 0
cen_y = 0
cen_z = 0
origin = np.array([cen_x,cen_y,cen_z])
normal = np.array([np.random.uniform(-1,1),np.random.uniform(-1,1),np.random.uniform(0,1)])
a = normal[0]
b = normal[1]
c = normal[2]
#equation for a plane is a*x+b*y+c*z+d=0 where [a,b,c] is the normal
#so calculate d from the normal
d = -origin.dot(normal)
# create x,y meshgrid
xx, …Run Code Online (Sandbox Code Playgroud)