• C++ STL自学总结,仅供参考


    本文内容,为博主在网上看到资料总结整合而来

    一、stl格式简介

         .stl文件是在计算机图形应用系统,来表示封闭的面或者体,用来表示三角形网格的一种文件格式。为STereo Lithography的缩写,由3D Systems公司于1987年开发而来,利用三角片离散近似表示三维模型,近年来已经成为快速原型技术领域广泛应用的文件格式和接口标准。

         一个stl文件坐标必须是正数,没有比例信息,单位是任意的。

    二、stl文件格式

         stl文件分为ASCII明码格式和二进制格式。

         ASCII格式的stl结构如下:

     1 solid filename.stl//文件路径及文件名字
     2 facet normal  x  y  x//三角片的外法向量
     3  vertex x y z//第一个顶点
     4  vertex x y z//第二个顶点
     5  vertex x y z//第三个顶点
     6  end loop
     7  endfacet
     8  .
     9  .
    10  .
    11  endsolid

        

        上图为我运行生成的stl文件的一个片段例子

        一个三角片包含三角片的外法向量和按右手螺旋规则排列的三个顶点。

        因为ASCII格式可能非常大,所以便存在了二进制的格式

        二进制格式的stl结构如下:

       

    1 UINT8//文件头
    2 UINT32//三角片数量
    3 foreach triangle
    4 REAL32[3]//法线矢量
    5 REAL32[3]//顶点一
    6 REAL32[3]//顶点二 
    7 REAL32[3]//顶点三
    8 UINT16//文件属性统计
    9 end

    三、.stl文件导出及显示工具

        这里我利用vtk来写.stl文件,再利用MeshLab来打开文件进行显示

        导出代码如下: 

     1 // VTK
     2 ......
     3 #include"vtkSTLWriter.h"
     4 
     5 int main(int argc, char *argv[])
     6  {//argc表示传入main函数的参数个数;argv0表示程序的名称,并且包含了程雪所在的完整路径
     7 
     8             .......
     9         vtkSTLWriter *writer = vtkSTLWriter::New();//Stereo lithography files only contain triangles. If polygons with more than 3 vertices are present, only the first 3 vertices are written.
    10         writer->SetInputConnection(skinStripper->GetOutputPort());
    11         writer->SetFileName("D:/DATAOUT/poly2procs.stl");
    12         writer->Update();
    13         writer->Write();
    14         
    15         system("pause");
    16 
    17         return 0;
    18 }
  • 相关阅读:
    使用Azure进行自动化机器学习
    关于ML.NET v1.0 RC的发布说明
    关于ML.NET v0.8的发布说明
    使用ML.NET + Azure DevOps + Azure Container Instances打造机器学习生产化
    使用ML.NET + ASP.NET Core + Docker + Azure Container Instances部署.NET机器学习模型
    neo4j 数据库迁移
    ubuntu1604 搜狗输入法安装
    Chrome 键盘快捷键
    Ubuntu Cleaner清理工具
    bash 数组
  • 原文地址:https://www.cnblogs.com/bxyan/p/6613093.html
Copyright © 2020-2023  润新知