CN112150599B - 一种修正stl文件外法线的方法 - Google Patents
一种修正stl文件外法线的方法 Download PDFInfo
- Publication number
- CN112150599B CN112150599B CN202011032555.6A CN202011032555A CN112150599B CN 112150599 B CN112150599 B CN 112150599B CN 202011032555 A CN202011032555 A CN 202011032555A CN 112150599 B CN112150599 B CN 112150599B
- Authority
- CN
- China
- Prior art keywords
- surface element
- triangular surface
- normal
- triangular
- ray
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
- G06F17/12—Simultaneous equations, e.g. systems of linear equations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Operations Research (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种修正STL文件外法线的方法,用以解决STL文件中法线方向不一致的问题;通过该算法后,STL文件中所有三角面元法线全部是外法线或全部为内法线。以STL文件三角面元中心点为起点的法线为射线,在考虑射线可能与两个三角面元的公共边相交或射线刚好穿过多个三角面元的公共顶点这两种情况下,根据射线与其他面元网格交点数为奇偶判断法线是否为内法线。
Description
技术领域
本发明涉及数据结构与算法技术领域,具体涉及一种修正STL文件外法线的方法。
背景技术
STL(stereo lithography)是三维图形文件接口,已被工业界认为是目前快速成型领域的标准零件描述文件格式。它采用一系列三维的三角形记录实体模型的边界,包括三角形所在平面的法线和它所包含的三个顶点坐标。STL文件中三角形法线与三个顶点之间遵循右手定则,在生成STL文件时,三角顶点记录顺序是紊乱的,导致法线有的是外法线,有的是内法线,法线方向不一致。
邱元庆等采用从一个三角面元开始遍历,比较其法向量和周围其他三角面元法向量,看差值是否在一定阈值内,若不是,则判定法向量有错。这种方法由于人为主观性和法向量方向的多样性,很难修复所有的法向量错误,尤其在曲率较大的面或面面相交的地方。李正洲等采用在三角面元附近沿法线方向取一点,从该点沿任意方向作射线,射线与三角面元交点为偶数,该三角面元法线为外法线,否则,为内法线。这一方法简单快捷,但在其公开文献中,并没考虑射线刚好穿过两个三角面元的公共边或射线刚好穿过多个三角面元的公共顶点情况。
发明内容
本发明所要解决的问题是:提供一种修正STL文件外法线的方法,以STL文件三角面元中心点为起点的法线为射线,在考虑射线可能与两个三角面元的公共边相交或射线刚好穿过多个三角面元的公共顶点这两种情况下,根据射线与其他面元网格交点数为奇偶判断法线是否为内法线。
本发明为解决上述问题所提供的技术方案为:一种修正STL文件外法线的方法,所述方法包括以下步骤,
(1).从STL文件中读取三角面元信息给A;
(2).通过三角形三顶点计算出三角形中点,以中点为起点,三角面元法线为方向,按数学公式(1)建立射线方程;设置统计交点数的变量count=0;
p=ps+t*v (1)
(3).从STL文件中读取三角面元信息给E,如E等于A则读取下一个三角面元给E;
(4).通过公式(1)(2)(3)计算出t值,根据t判断射线是否与三角面元E所在平面相交,如相交,再用公式(4)计算交点与三角面元E三顶点组成的三个三角形面积,根据三个三角形面积和是否等于三角面元E的面积,判断射线是否与三角面元E相交;
n*(p-p0)=0 (2)
t=-(ps–p0)*n/(v*n) (3)
S=|AB×AC|/2 (4)
(5).如射线与三角面元E相交,则判断这一交点与前面已求出的交点是否重合,如不重合,count变量加1;
(6).重复进行(3)、(4)、(5)步骤,直至STL文件中无三角面元赋给E;
(7).判断count是否为奇数,如为奇数,则三角面元A法线为内法线,将三角面元A内法线取反改为外法线;
(8).重复进行(1)、(2)、(3)、(4)、(5)、(6)、(7)步骤,直至STL文件中无三角面元赋给A,算法结束。
优选的,所述步骤(1)中三角面元信息包含三角形三顶点和三角面元所在平面法线。
与现有技术相比,本发明的优点是:本发明以STL文件三角面元中心点为起点的法线为射线,在考虑射线可能与两个三角面元的公共边相交或射线刚好穿过多个三角面元的公共顶点这两种情况下,根据射线与其他面元网格交点数为奇偶判断法线是否为内法线。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1是本发明方法流程图;
图2是射线示意图;
图3是平面示意图;
图4是飞行器修改前后法线比较图(左边为修改前,右边为修改后)。
具体实施方式
以下将配合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
本发明的目的是提供一种算法,用以解决STL文件中法线方向不一致的问题;通过该算法后,STL文件中所有三角面元法线全部是外法线或全部为内法线。
发明原理:涉及数学方法:
1)射线与平面交点方程
如图2所示,ps是射线起点,p为射线上任意一点,设v为射线方向单位向量,则向量psp=t*v,射线方程为:
p=ps+t*v (1)
如图3所示,n为平面法线矢量,p0为平面上一已知点,p为平面任意一点,则该平面方程为:
n*(p-p0)=0 (2)
联立方程(1)(2)求解得:
t=-(ps–p0)*n/(v*n) (3)
若t≥0,射线与平面相交,交点为:
p=ps+t*v。
2)矢量叉乘求解三角面元面积公式
已知三角面元的三个顶点A、B、C,三角面元两矢量边为AB、AC,则三角面元的面积为:
S=|AB×AC|/2 (4)
面法线射线法是以要判断的三角面元中心点为射线起点,该面元的法线方向为射线方向构建射线,判断该射线与其他三角面元相交次数(如射线与两三角面元公共线段相交或穿过多个三角面元的公共顶点时交点重叠,只算一次),若相交次数为奇数,则要判断的三角面元法线为内法线,反之,则为外法线。其中,射线与面元所在平面相交后,还需通过交点与面元三顶点所构成的三个三角形面积和是否等于面元面积才能判断交点是否落在面元上。
本发明方法如算法流程如图1所示,包括如下步骤:
1.从STL文件中读取三角面元信息给A(含三角形三顶点和三角面元所在平面法线);
2.通过三角形三顶点计算出三角形中点,以中点为起点,三角面元法线为方向,按数学公式(1)建立射线方程;设置统计交点数的变量count=0;
3.从STL文件中读取三角面元信息给E,如E等于A则读取下一个三角面元给E;
4.通过公式(1)(2)(3)计算出t值,根据t判断射线是否与三角面元E所在平面相交,如相交,再用公式(4)计算交点与三角面元E三顶点组成的三个三角形面积,根据三个三角形面积和是否等于三角面元E的面积,判断射线是否与三角面元E相交;
5.如射线与三角面元E相交,则判断这一交点与前面已求出的交点是否重合,如不重合,count变量加1;
6.重复进行3、4、5步骤,直至STL文件中无三角面元赋给E;
7.判断count是否为奇数,如为奇数,则三角面元A法线为内法线,将三角面元A内法线取反改为外法线;
8.重复进行1、2、3、4、5、6、7步骤,直至STL文件中无三角面元赋给A,算法结束。
以上仅就本发明的最佳实施例作了说明,但不能理解为是对权利要求的限制。本发明不仅局限于以上实施例,其具体结构允许有变化。凡在本发明独立权利要求的保护范围内所作的各种变化均在本发明保护范围内。
Claims (2)
1.一种修正STL文件外法线的方法,其特征在于:所述方法包括以下步骤,
(1).从STL文件中读取三角面元信息给A;
(2).通过三角形三顶点计算出三角形中点,以中点为起点,三角面元法线为方向矢量,按数学公式(1)建立射线方程;设置统计交点数的变量count=0;
p=ps+t*v (1)
(3).从STL文件中读取三角面元信息给E,如E等于A则读取下一个三角面元给E;
(4).通过公式(1)(2)(3)计算出t值,根据t判断射线是否与三角面元E所在平面相交,如相交,再用公式(4)计算交点与三角面元E三顶点组成的三个三角形面积,根据三个三角形面积和是否等于三角面元E的面积,判断射线是否与三角面元E相交;
n*(p-p0)=0 (2)
t=-(ps–p0)*n/(v*n) (3)
S=|AB×AC|/2 (4)
(5).如射线与三角面元E相交,则判断这一交点与前面已求出的交点是否重合,如不重合,count变量加1;
(6).重复进行(3)、(4)、(5)步骤,直至STL文件中无三角面元赋给E;
(7).判断count是否为奇数,如为奇数,则三角面元A法线为内法线,将三角面元A内法线取反改为外法线;
(8).重复进行(1)、(2)、(3)、(4)、(5)、(6)、(7)步骤,直至STL文件中无三角面元赋给A,算法结束。
2.根据权利要求1所述的一种修正STL文件外法线的方法,其特征在于:所述步骤(1)中三角面元信息包含三角形三顶点和三角面元所在平面法线。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011032555.6A CN112150599B (zh) | 2020-09-27 | 2020-09-27 | 一种修正stl文件外法线的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011032555.6A CN112150599B (zh) | 2020-09-27 | 2020-09-27 | 一种修正stl文件外法线的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112150599A CN112150599A (zh) | 2020-12-29 |
CN112150599B true CN112150599B (zh) | 2022-11-04 |
Family
ID=73894700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011032555.6A Active CN112150599B (zh) | 2020-09-27 | 2020-09-27 | 一种修正stl文件外法线的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112150599B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115775301B (zh) * | 2023-02-13 | 2023-05-02 | 山东捷瑞数字科技股份有限公司 | 一种基于三维引擎统一物体模型法线的方法、装置及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761397A (zh) * | 2014-01-26 | 2014-04-30 | 张靖 | 用于面曝光增材成型的3d模型切片及投影面生成方法 |
CN108646228A (zh) * | 2018-05-11 | 2018-10-12 | 电子科技大学 | 一种基于po方法的雷达散射截面计算方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5596504A (en) * | 1995-04-10 | 1997-01-21 | Clemson University | Apparatus and method for layered modeling of intended objects represented in STL format and adaptive slicing thereof |
CN108298075B (zh) * | 2018-02-02 | 2021-01-05 | 南昌航空大学 | 能悬停的扑翼飞行器及其控制方式 |
CN110705058B (zh) * | 2019-09-19 | 2021-08-31 | 电子科技大学 | 一种针对超电大尺寸规模目标的近场电磁散射仿真方法 |
-
2020
- 2020-09-27 CN CN202011032555.6A patent/CN112150599B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761397A (zh) * | 2014-01-26 | 2014-04-30 | 张靖 | 用于面曝光增材成型的3d模型切片及投影面生成方法 |
CN108646228A (zh) * | 2018-05-11 | 2018-10-12 | 电子科技大学 | 一种基于po方法的雷达散射截面计算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112150599A (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106289233B (zh) | 多形态障碍的无人机路径规划方法及系统 | |
US8269771B2 (en) | Remeshing method and apparatus for restoring sharp features of mesh made smooth enough | |
US20120206457A1 (en) | Methods and Systems for Generating Continuous Surfaces from Polygonal Data | |
US20110158555A1 (en) | Curved surface area calculation device and method | |
CN112150599B (zh) | 一种修正stl文件外法线的方法 | |
CN111243094B (zh) | 一种基于点灯法的三维模型精确体素化方法 | |
Andersson et al. | Polyhedral perturbations that preserve topological form | |
US11494982B2 (en) | Feature based abstraction and meshing | |
US8022949B2 (en) | System and method for generating curvature adapted isosurface based on delaunay triangulation | |
CN105785919A (zh) | 点云五轴无全局干涉刀轴矢量可行域计算方法 | |
US20150206342A1 (en) | Methods and Systems for Generating Continuous Surfaces from Polygonal Data | |
CN110001066B (zh) | 一种三维打印最少分区填充方向确定方法 | |
CN108510579B (zh) | 一种工业复杂裁剪曲面的渲染显示方法 | |
JP2023082702A (ja) | 3dcadモデルの分割 | |
CN115859524A (zh) | 一种基于stl模型的圆柱体布尔求差运算方法 | |
CN106651979A (zh) | 基于投影的空间曲面四边形网格剖分方法 | |
TW200823803A (en) | Method for constructing triangular grids of point clouds | |
WO2022046101A1 (en) | Mesh generation | |
CN115984511B (zh) | 一种基于cad的平行六面体体积平均共形网格剖分方法 | |
CN104504762B (zh) | 一种基于拓扑重建的义齿表面局部变形方法 | |
CN110796729B (zh) | 一种基于二叉树的网格划分方法 | |
Lin et al. | Rapid prototyping through scanned point data | |
KR101266336B1 (ko) | 3차원 유한체적 해석을 위한 전/후처리 방법 | |
JP4241778B2 (ja) | 面要素の歪み検出装置、面要素の歪み検出方法、およびプログラム | |
EP3279867B1 (en) | Method and system for the visualization of bivariate polynomials |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |