numpy 如何网格化这个非矩形形状(梯形)-用于3d立体可视化- python

l5tcr1uw  于 2023-02-08  发布在  Python
关注(0)|答案(1)|浏览(131)

我试图创建一个具有自定义形状的体积,要添加Z轴数据,我需要网格化X-Y数据。因此,我的问题。我想将此形状作为基础Trapezoid Base
不过,做完之后

X,Y = np.mesh(x,y)

我得到了一个对称的矩形,而不是看起来像梯形的形状。
有没有其他有效的方法来填充这个梯形?
下面是代码:

x1 = np.zeros(20)
    y1 = np.linspace(-2,2,20)

    x2 = np.linspace(0,30,20)
    y2 = np.sqrt((   5/max(x2) * x2 +4     ))

    x3 = np.linspace(0, 30, 20)
    y3 = -np.sqrt((5 / max(x3) * x3 + 4))

    x4 = np.ones(20)*30
    y4 = np.linspace(-3,3,20)

    x = np.concatenate((x1, x2, x3, x4))
    y = np.concatenate((y1,y2,y3,y4))

    # u,v = np.meshgrid(x,y)
    # x = u.flatten()
    # y = v.flatten()

    plt.plot(x,y)
    plt.show()

尝试使用plotly填充一个trapizoid形状以构建一个3d体积表示

8zzbczxx

8zzbczxx1#

我觉得你能做到。
关键是定义y的规范化版本(定义域为-1到1),并将其乘以y的最终公式

import numpy as np
import matplotlib.pyplot as plt

n = 20
x = np.linspace(0, 30, n)
y = np.linspace(-1, 1, n)

xx, yy = np.meshgrid(x, y)

yy *= np.sqrt(5/x.max() * x + 4)

plt.scatter(xx, yy)
plt.show()

相关问题