Python 创建表示几何图形的Numpy数组

Python 创建表示几何图形的Numpy数组,python,arrays,numpy,geometry,Python,Arrays,Numpy,Geometry,正如标题所示,如何创建几何形状的三维坐标的numpy数组 目前,我已经找到了最简单的形状: latva = 6 latvb = 6 latvc = 6 latdiv = 20 latvadiv = latva / latdiv latvbdiv = latvb / latdiv latvcdiv = latvc / latdiv lol = np.zeros((latdiv**3,4),dtype=np.float64) lol[:,:3] = (np.arange(latdiv**3)[:,N

正如标题所示,如何创建几何形状的三维坐标的numpy数组

目前,我已经找到了最简单的形状:

latva = 6
latvb = 6
latvc = 6
latdiv = 20
latvadiv = latva / latdiv
latvbdiv = latvb / latdiv
latvcdiv = latvc / latdiv
lol = np.zeros((latdiv**3,4),dtype=np.float64)
lol[:,:3] = (np.arange(latdiv**3)[:,None]//(latdiv**2,latdiv,1)*(latvadiv,latvbdiv,latvcdiv)%(latva,latvb,latvc))
创建(8000,4)的数组。如果你沿着1,2,3列分割数组(忽略第4列,因为它在这个问题中毫无意义)并绘制它(我个人使用pyplot),你会得到一个立方体

很简单。也适用于矩形

但是我不知道如何进一步——比如画菱形

我对黑魔法不感兴趣,比如球体、椭圆或形状,它们的边不会随直线变化。就像你的标准菱形/菱形/平行六面体/随便你怎么称呼它


关于如何实现这一点有什么想法吗

因为您已经有了在正方形或立方体中生成点的方便方法,所以制作菱形、平行四边形(2D)和平行六面体(3D)的最简单方法是应用仿射变换来计算新的点坐标

例如,要制作菱形,可以将矩阵作为平移(-centerX,-centerY)、旋转(Pi/4)、沿轴缩放(如果需要)和平移到所需位置的组合

AffMatrix = ShiftMatrix * RotateMatrix * ScaleMatrix * BackShiftMatrix
for each point coordinates:
   (NewX, NewY) = (AffMatrix) * (X, Y)
菱形也包括剪切变换


我认为
numpy
已经准备好使用例程来创建和组合(乘法)仿射矩阵。

因为您已经有了方便的方法来生成正方形或立方体中的点,这是生成菱形的最简单方法,二维情况下的平行四边形和三维情况下的平行六面体是应用仿射变换来计算新的点坐标

例如,要制作菱形,可以将矩阵作为平移(-centerX,-centerY)、旋转(Pi/4)、沿轴缩放(如果需要)和平移到所需位置的组合

AffMatrix = ShiftMatrix * RotateMatrix * ScaleMatrix * BackShiftMatrix
for each point coordinates:
   (NewX, NewY) = (AffMatrix) * (X, Y)
菱形也包括剪切变换


我认为
numpy
已经准备好使用例程来创建和组合(乘法)仿射矩阵。

最后一行中的pythonic abracadabra的用途是什么?使用立方体内规则栅格点的三维坐标填充阵列?在立方体表面?在边缘?@MBo这里有解释。很抱歉,我无法在手机上创建可单击的链接。latvadiv、latvbdiv,latvcdiv@DanPatterson哎呀,你说得对,更新了。最后一行的蟒蛇咒是用来干什么的?使用立方体内规则栅格点的三维坐标填充阵列?在立方体表面?在边缘?@MBo这里有解释。很抱歉,我无法在手机上创建可单击的链接。latvadiv、latvbdiv,latvcdiv@DanPatterson哎呀,你说得对,更新了。