Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
Algorithm 将简单等轴测图像转换为三维图像_Algorithm_3d_Language Agnostic_Computational Geometry_Voxel - Fatal编程技术网

Algorithm 将简单等轴测图像转换为三维图像

Algorithm 将简单等轴测图像转换为三维图像,algorithm,3d,language-agnostic,computational-geometry,voxel,Algorithm,3d,Language Agnostic,Computational Geometry,Voxel,我很好奇如何在简单的等距图像中推导出三维坐标。 我能想到的唯一方法是进行深度优先搜索,找到每个面的顶点,然后使用复杂的分支逻辑,从所有可能存在的面如何部分隐藏的可能性中找出顶点位置。有什么更好的方法来解决这个问题 这只是出于爱好,所以我可以进一步简化问题(比如要求场景仅由单位体素组成,或者只给出单个体素中点的坐标,而不是逆时针顺序给出坐标和它们的面索引) 我假设输入是我在图片中使用的五种不同颜色的矩阵。作为输出,我希望得到一个3D坐标列表,可能还附带一个面坐标索引列表。我假设您能够检测所有边及其

我很好奇如何在简单的等距图像中推导出三维坐标。 我能想到的唯一方法是进行深度优先搜索,找到每个面的顶点,然后使用复杂的分支逻辑,从所有可能存在的面如何部分隐藏的可能性中找出顶点位置。有什么更好的方法来解决这个问题

这只是出于爱好,所以我可以进一步简化问题(比如要求场景仅由单位体素组成,或者只给出单个体素中点的坐标,而不是逆时针顺序给出坐标和它们的面索引)


我假设输入是我在图片中使用的五种不同颜色的矩阵。作为输出,我希望得到一个3D坐标列表,可能还附带一个面坐标索引列表。

我假设您能够检测所有边及其方向(在六种可能性中)。如果它们是完整的或闭塞的。并检测顶点,从而得到一个2D图形

将坐标(0,0,0)指定给某个点,例如最低顶点。然后根据已知点的每条完整边,通过考虑边的方向(可能还有长度)获得端点的坐标,并知道递增/递减哪个坐标

最后,您将获得完整边端点的所有坐标,告知完整面,并能够告知被遮挡的面


您是否仅通过分析图像来推断坐标?如果是这样,5种颜色中的每一种都代表不同类型的着色吗?如顶部、右侧、左侧、边框、NUL/BG?另一个注意事项-从图像中可以看出,如果地板上允许有“洞”,那么中间3高塔楼后面的瓷砖可能永远是1到负的任何高度值。那么,最难的部分实际上就是高度。因为瓷砖的大小完全相同,如果它们的高度也相同,您只需进行简单的坐标变换即可找到X/Y值。基本上,将空间从等轴测向后变换为自顶向下视图,然后按正方形边缘大小(或矩形,如果您想使其“倾斜”,只进行二维旋转)进行分割。我就从这个开始。你可以看看华尔兹算法:对于高度,我从图像的底部开始(称为平铺0,0),向上扫描,直到找到“顶色”。从这里开始,向下扫描并计算您看到的“边缘到左/右过渡”的数量,直到您点击NUL/BG。这就是瓦片的高度。如果瓷砖是一个“洞”,则此操作失败,但同样,这是一个开始。扫描下一个磁贴,说最低磁贴的左上角(说磁贴1,0),然后重复。你可以在同一个“顶部”颜色区域内以相同的高度“泛光填充”所有顶部瓷砖。听起来很简单,我真的不明白它是如何工作的:)可能需要一些示例来帮助我。听起来很有希望。这个周末我会玩一玩,看看这能不能解决我的问题。