我有一个csv文件,编码9000x5000分辨率的大坝照片的海拔数据,我想生成一个stl文件,我可以打印在我的3d打印机。csv有3个参数:X、Y和Z,其中X & Y表示照片上的像素位置,Z表示Pixel (X,Y)的地形高度。我想要一个三维文件的照片问题,与角落,裂缝,和山丘所表示的海拔数据。我试图使用Python numpy-stl来完成这个任务,但是我意识到我对stl文件还不太了解,无法完成打印工作。关于如何制作此文件或stl文件如何编码信息的任何信息都将非常有用。
发布于 2017-11-15 16:19:44
你拥有的是一个顶点的集合。然而,STL编码的是一个三角形列表。所以你需要做的是构造连接你的顶点的三角形网格。我假设您希望自己编写代码,我将为您提供一些关于如何进行编码的提示。
首先,你应该找出你的观点是否是结构化的。所谓结构化,我的意思是点的x坐标和y坐标形成一个规则的网格(当数据是从机载扫描中获得时,通常是这样的)。
如果点是结构化的
如果点是结构化的,那么您就有相当大的机会自己构建网格。表示P(i,j)点(Xi,Yj,Zi,j),即第一个坐标是x-坐标列表中的第一个数的点,其第二个坐标是y-坐标列表中的第j个数,其第三个坐标是对应于前两个坐标的z-坐标。图1说明了。

现在你需要决定你的三角形的方向。它们要么是正面的(逆时针方向),要么是负向(顺时针方向).假设您决定负方向,现在可以创建连接点P(i,j)、P(i+1,j)和P(i+1,j+1)的三角形。见图2。

在下一步中,您可以创建具有相同方向的相邻三角形,例如P(i,j),P(i+1,j+1),P(i,j+1)。见图3.中较暗的三角形。

对所有合适的i's和j's进行同样的处理,你可以得到所有必要的三角形。
唯一缺失的部分是每个三角形的正常值。这可以按照交叉积中的建议使用这个答案进行计算。
现在,您已经准备好将所有内容写入您的文件。按照维基百科上的描述,对于每个三角形,您将写出它的法线和三个顶点。
如果点不是结构化的
在这种情况下,如果没有对网格划分方法的重要研究(您可能需要了解Delaunay三角剖分),您就没有多少机会创建网格。幸运的是,有一些库可用。例如,Fade2.5D是一个可以帮助您的C++库,它对个人非商业研究是免费的。也许Python也有类似的东西可用。
https://stackoverflow.com/questions/45364558
复制相似问题