Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python3.x中,使用透视图将三维数组投影到二维数组上_Python_Arrays_3d_Console_Projection - Fatal编程技术网

在Python3.x中,使用透视图将三维数组投影到二维数组上

在Python3.x中,使用透视图将三维数组投影到二维数组上,python,arrays,3d,console,projection,Python,Arrays,3d,Console,Projection,我有一个3d数组/列表作为坐标系。我想在terminal/cmd窗口中显示简单的东西,如具有3d效果的线条或立方体。目前,我只是将z值(与第一个平面的距离)映射到一些ASCII字符以模拟深度。但在现实世界中,光被一个点捕捉,而不是一个平面。这给了它一个视角。我读过一些投影方法,但找不到任何适合我需要的文章。我知道这是非常缓慢的,使用np等将使它更快,但我想在(有点)纯Python中这样做。我有一个完整的类,但我只发布重要的函数。以下是我到目前为止得到的信息: 将3d压缩为2d的功能:(d2代表2

我有一个3d数组/列表作为坐标系。我想在terminal/cmd窗口中显示简单的东西,如具有3d效果的线条或立方体。目前,我只是将z值(与第一个平面的距离)映射到一些ASCII字符以模拟深度。但在现实世界中,光被一个点捕捉,而不是一个平面。这给了它一个视角。我读过一些投影方法,但找不到任何适合我需要的文章。我知道这是非常缓慢的,使用np等将使它更快,但我想在(有点)纯Python中这样做。我有一个完整的类,但我只发布重要的函数。以下是我到目前为止得到的信息:

将3d压缩为2d的功能:(d2代表2d)

我该如何重写这篇文章,使其具有前瞻性? 下面是一个示例,其中一行从(3,7,16)到(90,90,90),数组大小为100x100x100:


但是如果是立方体的话,图片看起来就像一个正方形。这就是我的问题。

你必须在等式中添加透视变换和相机位置,请参阅OpenGL文档了解数学知识,使用字符屏幕显示像素并不能提供太多分辨率
depthASCII = list("@%#*+=-:. ")
def d2(self, arr):
        intervall = len(self.depthAscii)/self.depth
        nA = [["" for x in range(self.width)] for y in range(self.height)]
        for x in range(self.width):
            for y in range(self.height):
                try:
                    if self.pixel in arr[x][y]:
                        nA[x][y] = self.depthAscii[int(self.field[x][y].index(self.pixel)*intervall)]
                    else:
                        nA[x][y] = " "
                except:
                    raise
                
        return nA