发明内容
因此,本发明要解决的技术问题是,提供一种重构表面的方法,该方
法可以非常简单的方式再现多维表面。
本发明的上述技术问题是通过权利要求1、8、9和10的特征解决的,
本发明的优选改进方案由从属权利要求给出。
本发明所基于的考虑是,在重构或模拟表面、特别是工件表面时,产
生描述该表面的数据点。在此,表面重构应在没有几何信息的情况下借助
于数据点的相邻关系来实现。为此,优选采用按时间顺序序列形式的3D数
据点来描述结构,从而可利用线性内插来处理这些数据点,其中,使时间
顺序上直接相邻的3D数据点保持不变。作为结果,优选产生一表面网,特
别是三角网,将给出的数据点连结成网,并将多角形铣道的原始边作为网
格的边包括进来。这种方法优选称之为“网格化”(Meshing)方法,因为
每个数据点都作为一个网眼被编织到网里,或连接到网里。因此可以保证,
利用这样构建的网(优选是三角网),可以尽可能准确地复制出表面轮廓。
尤其可以保证对物体或结构的基本拓扑学的考虑。
依据结构或物体的类型和构造,尤其是对于在相邻数据点间的步长很
小的复杂物体,将产生多个网或子网。为了简化和降低复杂性,有针对性
地将相互距离小于预定步长的数据点结合成一个网数据点,其中,要考虑
可预先给定的允许近似误差。由此可以确定所谓的简并三角(degeneriert
Dreiecke)并将其除去,由此以非常简单的方式降低了网复杂性。这种方法
优选地被称为“网栅化(Rasterizing)”方法,因为通过对步长的量化而实
现了一种网栅。
为了描述很复杂的物体,优选利用网数据点这样将多个网相互连接起
来,使得边缘多边形保持不变。由此保证物体的轮廓,尤其是其边缘点,
在重构或模拟时保持不变。这种方法被优选称为“合并(Fusion)”方法,
因为通过连接网数据点,将物体的子表面借助于拼合在一起的网而相互连
接。因此,这种“合并”允许例如可以追溯到工件的平面部分的合并。这
例如在通过现有非轮廓方法途径、例如传输途径(Zustellwege)将工件或工
件的3D数据分解成各个处理部分时是需要的。
根据各种表面重构方法的类型和功能,可将这里所描述的方法:“网格
化”方法、“网栅化”方法或“合并”方法作为独立的方法,并因而可以相
互独立地实现。这尤其与输入数据的类型和/或要达到的连网度有关。对于
要尽可能准确且接近真实地重构表面,将分段实现该三种方法,其中,可
以根据需要对已有的数据利用每一方法步骤进行补充或者不加以采用
(ausdienen)。
优选将上述方法用于重构由铣道形成的工件轮廓。其中,利用3D数据
点有目的地对铣道进行定义,并对铣过的工件表面进行近似。在此,优选
使用一种系统对数组进行可视化和/或变换,该系统具有用于重构物体表面
的装置。这种系统例如有CAD系统,如用于对工件进行模型化的可编程计
算单元。在此,这种CAD系统,特别是其CAD/CAM接口,提供一种计算
机程序产品,例如所谓的NC程序(NC=numerical control,数值控制)。
借助于CAD系统实施的工件的CAD模型化导致起铣刀中点铣行程
(Fraesvorschrift DES Werkzeugmittelpunkts)作用的NC子程序、即3D数据
点。在此,该铣行程典型地为曲折形或环形的。此外,在CAD模型化中产
生一NC子程序,其为控制提供不同的NC控制组件,如压缩器、内插器。
可视化优选平面地实现,以便能够更好地确定轮廓的不完善性。如果例如
假定为一零维铣刀,例如点铣刀,则在这种情况下工件轮廓是以可回溯到
平面的铣刀中点的铣道形式产生的。据此,可以推断出待铣工件轮廓的不
完善性。
在此,本发明以非常简单的方式解决了所遇到的平面回溯问题。为此,
借助所确定的三角网,对作为平面网上数据点的铣点进行内插。此外,直
到边缘区域仍能保证得到铣道,即在非相互对置的铣道上不产生三角形。
由此保证在借助内插实现的三角网的优化中,尽量真实地再现该表面、尤
其是这些表面的边。本方法的突出特点在于,无需对工件的拓扑结构进行
限制。因此,对向后凹的轮廓也可以利用本方法进行回溯。
本发明所获得的优点尤其在于,能够实现保证获得边、如铣道的平面
回溯。由此在再现物体表面时可使轮廓尽可能地真实。尤其是充分考虑了
物体的拓扑结构,从而也可以重构例如铣工件的向后凹轮廓。
具体实施方式
下面将以一对待用铣床加工的工件进行表面重构的算法为例对本发明
进行描述。该算法或方法也适用于对各种表面进行重构。
在重构待铣工件表面时,预先给定了离散的铣道数据作为数据点、特
别是3D数据点。为了随后对工件进行加工,借助NC程序将这些数据点按
时间顺序传输给铣床。换言之,就是将那些按时间顺序表示铣头开始位置
的一系列点坐标或铣道数据作为数据点预先给定。作为结果,按照本方法,
将产生一三角网,其将给出的数据点连结成网,并将多边形铣道的原始边
作为网边的子集包括进来。除了相互接续的铣道点的相邻关系外,不需要
其它输入,特别是不需要几何附加信息。
本方法优选借助平面几何探索(flaechengeometrische Heuristike)、例如
正切平面的存在来优化。优选将本方法划分为将在下面详细描述的三个相
互独立的阶段。以下的描述将集中在对基本算法的描述上。其中,这三个
阶段可以单独实现或前后相接作为一个总方法实现。
阶段1:“网格化”
实际的网格化是通过将相邻铣道之间的空间连结成网来连接数据点或
铣道数据,以进行表面重构。其结果是一个三角网,其中,各三角分别以
三个点下标给出。
对于相邻铣道主要区分螺旋形配置和曲折形配置。在螺旋形配置下,
两条铣道有相同的运行方向,而在曲折形配置下,两条铣道的方向相反。
当变换主铣方向时,会出现空间上相近铣道的其它配置,在此,对它们的
处理与对相邻铣道不同。由此在表面重构中造成的空隙可在一后续阶段中、
例如“合并阶段”中使之闭合。在图1至3中举例示出了相邻铣道的不同
配置。对于结网,优选考虑关于铣道和表面的几何学似然性假设。这里,
首先包括关于相邻铣道延伸的假设,如使其便于识别的准平行性假设。依
据预先给定的数据,这种简化的表面结网足以用于对其进行重构。
阶段2:“网栅化”
作为另一种选择或补充,可以对在网格化阶段产生的网通过所谓的“网
栅化”进行处理,由此降低数据复杂度并因此简化了可继续处理性。特别
是在开销大的NC程序或沿铣道的很小步长的情况下,可使在网格化阶段重
构的网非常复杂。为了能够利用计算机程序产品进一步简单而快速地对数
据进行处理,需在尽量保持表面的视觉效果的情况下降低网复杂度。这里,
将相互间距离小于预先给定步长ε的数据点、即铣道点组合成一个网数据
点。通过去除由此造成的简并三角,降低了网复杂度。由于这种简化导致
的近似误差可以通过网栅的大小来估计,并作为允许近似值来考虑。
阶段3:“合并”
作为另一种选择或补充,可以对在网格化和/或网栅化阶段产生的网通
过所谓的“合并”进行处理,由此再一次改善了表面重构。在处理实际数
据时,例如可通过铣头的放下和再次抬起将各NC程序划分为多个子程序。
此外,在网格化阶段之后在重构的表面中存在由于主铣方向变换而可能造
成的空隙。在合并阶段,优选将这些子网连结成一个总表面。由于这些子
网是由铣道重构的表面,可能的几何配置数可通过一一对应地配置有关的
边缘多边形来减少。
图4中举例示出了由预先给定的数据点(铣道数据)重构多边形表面。
图5示出了借助于通过网格化而不合并子网产生的三角网的铣道的实际结
网。图6示出了在保持表示边缘点的网数据的情况下将多个子网合并。
根据图5,网格化阶段的主要任务在于,将多边形铣道的每个边与相邻
铣道的相应数据点相对应。当多边形铣道的每个边至少从属于两个三角时,
例如各有一个三角分别连接到左相邻铣道和右相邻铣道时,则结网是完全
的。这种连网保证按照图4的原始铣道的边包含在三角形中。附加的三角
将会破坏表面拓扑结构。在此,该算法以搜索阶段开始,在其中,确定初
始相邻关系,并借助于连接建立初始相邻关系。初始连接将通过各种探索
进行修改,以改善表面的质量。由于对于铣道之间的表面特性不可能给出
确切的判断,因此这里优选使用探索法。接着,由此确定的铣道间的连接
将产生图5所示的、拓扑一致的网。随后对网结构进行优化,如网栅化或
合并,这提高了重构表面的几何平滑度,并闭合了在铣道转换处
(Wendepunkt)的小缝隙,如图6所示。
当对每个三角或数据点(也称为顶点)确定了其直接邻居的完整列表
时,就在很大程度上完整地定义了一个三角网。由于预先给定的或确定的
点数据或数据点Pi表示一多边形铣道,则对每个数据点Pi公知的约定为,
其与数据点Pi-1和数据点Pi+1相邻。这一结果是根据铣道边应构成重构的
三角网的网边的子集这一要求得到的。为了实现完整的表面重构,优选以
与铣道正切正交的方式重构相邻关系信息。在此,优选为每个边
PiPi+1至少
产生两个三角。在工件的边缘,即对第一铣道和最后铣道及其折返点,将
分别对每一铣道确定至少一个三角。对于一个边
PiPi+1,将通过一个在一相
邻铣道上的第三点Pj唯一地确定一个三角。为了优化该算法的性能,并避
免出现拓扑上的不一致,对每个边通过相邻关系检索仅确定一个三角。第
二个三角将有针对性地在实际结网阶段通过反向连接来确定。
优选将边
PiPi+1用作待重构表面的切线。此外,还确定一个通过点Mi
=1/2(Pi+Pi+1)并垂直于所观察的边的中间平面Ei。所有其它铣道边
PjPj+1
上贯穿中间平面Ei的点的集合相应于待重构表面的离散截面轮廓。通过中
间平面Ei定义的多边形给出了正交的正切方向。为了产生相邻关系,将确
定最近的贯穿点,并将其与边
PiPi+1相关联。对于每个铣道边,将通过相邻
关系检索确定一个三角,例如通过向上或向下检索(“上游”或“下游”)。
也就是说,将利用j<i或j>i+1来确定点Pj。
由于每条铣道是由组合在一起的各个部分构成的,所以在空间相邻的
部分之间必须有很强的一致性,且其下标偏移为|j-i|。由此,可对用于确
定相邻关系的检索空间加以限制。例如,在预先给定的窗口Pi+2,...,Pi+r
内检索最近的贯穿点就足够了。所有其它贯穿点描述其它相距较远的铣道,
在此不加以考虑。窗口的大小r取决于在同一铣道上最多有多少个点Pi。例
如,预先给定一最大数s。对于按照图1的具有螺旋铣道的螺旋形配置,预
先给定大小r为r>s。而对于按照图2的具有所谓的犁沟(Ackerfurchen)
的曲折形配置,预先给定大小r为r>2s。此外,在确定大小r时,还可以
考虑其它信息。通常,减小大小r可大大加快总的运行时间;增大大小r可
使本方法更可靠,特别是在利用非常小的步长的NC程序的情况。
通过计算通过中间平面Ei的贯穿点来检索相邻关系还存在另一问题。
首先,当同一铣道的平面法线发生很大变化时,中间平面Ei可与之重新相
切。此外,在较大的步长和相对小的曲率半径下,可能出现较远铣道的贯
穿点在几何上比直接相邻铣道的贯穿点更接近输出边
PiPi+1,如图7和图8
所示。为了避免这种“相移”,将预先给定一个相对特征值λ。该相对特征
值λ的值为局部最小几何特性的值与相邻铣道间局部最大距离的比值。换
言之,当两相邻铣道的局部最大距离为ρ时,则在其周围不允许出现曲率
半径小于λ×ρ的情况。这在铣道方向上和与其正交的正切方向上都是适用
的。对于相对特征值λ的值优选采用由经验确定的估计值λ=2。对于明显
小的值,在铣道具有大步长和小半径时,例如,在不光滑的立方体边缘,
会导致错误的相邻关系。而明显较大的值在铣道方向出现非常小的曲率半
径时,则会导致将多个边沿着同一铣道连接。
在按照所述的方式为每个边
PiPi+1确定了连接、即相邻铣道的数据点
Pj之后,将对初始连接进行清理,其中,将导致超长三角的连接去除。作
为数据点Pj,尤其要确定贯穿中间平面Ei的边
PjPj+1上的端点。由此,该
算法相对于相对特征值λ的子优化选择具有鲁棒性。
初始连接将借助一个边与中间平面Ei的贯穿点来确定。在有些情况下,
首先是在与铣道正交的正切方向上表面陡度较高的情况下,可以对已找到
的连接点再进行改善。第一步的检索为每个边
PiPi+1找到一个例如在下游相
邻铣道上的较近的点Pj。但该点不必是该铣道上距其最近的点。因此,在
第二阶段,将对所获得连接信息进行修改,以使对于每个边
PiPi+1,点Pj
恰好位于具有至边中点Mi最小欧几里德距离的相邻铣道上。通过这种后改
善有时还可以消除尚存在于同一铣道中的错误连接。例如,在图9和10中,
初始连接的改善是通过避免不一致的结网实现的。改进后的连接是由局部
梯度检索给出的。
为了避免错误连接,有针对性地实施一致性检查。这里,检查是沿着
一条铣道和其相邻铣道对按升序或按降序排列的数据点这样进行的,即对
前后相接的铣道边,其连接点的下标有同样构成一个升序或降序的单调序
列。通过一致性检查,将去除连接点的非单调下标序列。此外,对于曲折
形铣道边折返点处的非单调下标序列,在必要时将其考虑为是正确的。如
果这些连接点被无意地消除了,由此产生的表面空隙可在后续阶段,例如
合并阶段再次被闭合。
在一致性检查结束之后,对每一边
PiPi+1或者配有一个下游连接点
Pk(i),其中,k(i)>i,或者未找到在相邻铣道上的相应的点。图9和
图10举例示出了已部分重构的表面几何形状。此外,为了结网,为每个边
确定向上游方向的三角。在此有针对性地采用了与下游连接相同的算法。
出于效率的考虑,优选采用考虑所产生的三角网的拓扑一致性的算法,如
图11、12、13所示。图11示出了至三个前后相接的铣道边
PiPi+1、
Pi+1Pi+2、
Pi+2Pi+3的连接点的非单调下标序列[j+2;k+1;j],因此示出了一个不
一致结网的例子。数据点Pk(i)和Pk(i+1)例如可以是为直接相接的铣
道边
PiPi+1和
Pi+1Pi+2找到的连接点。这一信息足以用来为在数据点Pk(i)
和Pk(i+1)之间的铣道多边形的公共子序列确定“向上”连接(上游连接)。
图12中示出了这样的例子。图12和13示出了在第一阶段中借助“向上”
连接实现的重构的部分结网,以及借助于“向下”连接实现的总的结网。
借助于这种两级结网重构了大部分表面的几何形状。但典型地在曲折
形或犁沟形铣道转折点的周围仍留有未定义的区域。这一方面导致对在相
邻铣道间的过渡边的中间平面Ei无法确定有意义的贯穿点,另一方面由于
不能满足单调性标准而导致在一致性检查时,误将已找到的连接点消除。
将对具有未结网的转折弯道的问题配置进行检测,其中,首先通过测试k
(i-1)<μ确定转折弯道的存在(其中μ=全局常数)。如果子多边形Pi+1,...,
Pk(i)-1事实上未被结网,将产生附加三角扇形,也称为三角扇形
(TriangleFan)。在对转折弯道进行处理之后,可看出依然可能出现空隙。
这典型地表现为到目前为止重构的多面体表面的边缘多边形上的切口。通
过简单地确定边缘多边形的内角,可以识别这些切口,并可通过补充另一
三角消除该切口。为此,将通过另一常数定义相应的阈值。
换言之,就是首先建立一个较粗糙的网结构,其包括各三角形边的全
部相邻关系。利用该信息可以确定所有包含一特定网节点的三角。特别是
通过相邻关系还可以找到到目前为止已重构的网的边缘边和边缘节点。边
缘节点的内角将被确定为所有相邻三角的内角之和。
尽管在第一处理阶段之后完整的结网表面是拓扑一致的,但以小块重
构的线性几何结构仍可能包含几何伪影。其在原始几何形状的实际拐点处
被放大,如图14所示。为了消除这些伪影,将对所涉及的在第一阶段产生
的连接进行修正,即在必要时修改铣道间的结网。通过这种对结网的后优
化,可以减少在待重构表面的清晰边缘上的几何伪影。图15示出了这种提
纯的表面。
在此,将每个连接相邻铣道上两个点的网边作为四边形的对角线来确
定,该四边形是由两个以该边为界的三角形定义的。在此,借助所谓的“边
交换”(Edge-Swap)操作,将一个边用相应的该四边形的对角线来代替。
即,如设Δ(A,B,C)和Δ(D,C,B)为两个相邻的三角形,则“边交
换”操作将该两个三角形替换为Δ(A,B,D)和Δ(D,C,A)。通过“边
交换”操作,改变了多边形表面的几何结构,而不影响网的拓扑结构。由
此,实现了一种非常简便的后优化。
例如,在图16中示出了两个相邻的三角1和2以及与之相邻的其它三
角3、4、5和6。对多边形表面质量进行评价的一个好的准则是相邻三角的
法向矢量之间的最大角。优选采用Ti和Tj(其中,(i,j)∈{(1,3),(1,
4),(2,5),(2,6)})之间的最大法向角作为三角1和2之间的边的质
量度量。作为另一种选择或补充,将确定“边交换”操作后的结果质量。
如果质量得以改善,即最大法向角变小,则实施“边交换”操作,否则将
保持原始配置。换言之,就是实施所谓的“渴求的(Greedy)”优化,其中,
按序测试所有的边,并在必要时进行替换。依据预先给定的优化度,可以
多次执行该过程。
为了降低大数据量时的网复杂度,在遵守预先给定的允许近似误差的
情况下,有针对性地对原始数据进行粗略近似。由于减少的网数据尤其应
能用于可视化,采用了一种特别简单而有效的简化方法。优选采用一种所
谓的“顶点簇(Vertex-Clustering)”算法(=组合或分组网数据点)。该算法
的实现可对任意三角网进行处理,且不局限于连网算法(=“网格化”)的
结果。
例如,一个三角网可由点Pi的集合和三角Ti=[i1,i2,i3]的集合来给
出。下标i1,i2和i3在此表示数据点列表的参考(=现有数据点、3D数据
点的时间顺序序列),并定义了三角形Ti的三个角点。在“顶点簇”方法中,
将点Pi组合成空间上的簇或组,即将空间上相近的点用一个表示或数据点
来代替。由此,当三角形的至少两个角点属于同一簇或组(以下均称为簇)
时,这些三角的一部分将被简化。简化的三角将被消除,剩下的三角将以
降低的复杂度构成结果网。不同“顶点簇”技术的区别主要在于对簇的定
义,以及对每个簇的表达的选择。最简单的簇结构是由统一的空间网栅
(Raumraster)给出的,其中,对点Pi进行排序。优选预先给定网栅大小ε。
由此保证了该简化方法的允许近似误差为
因为这是两个在同一簇中的
点所能相隔的最大距离。在计算机程序产品中,将网栅大小ε作为程序参数
预先给定,或在需要时传递给其它NC程序部分。
在选择簇的表达时,可以有多种不同的实现和测试方式。一种可能的
将每个网栅单元的中点选作表达的应用会导致不可接受的结果,因为最终
的表面具有极强的表面法线的抖动。如果用各簇中所有点的重心来代替网
栅单元的中点,可改善表面的质量,但法向矢量仍可能跳跃。如果不是简
单地使用簇的重心,而是使用那些离重心最近的簇点,则可得到明显的改
善。由此可保证该简化网中的点构成原始点的子集。但在此应考虑到,在
这种简单的中值策略中表达的位置取决于簇点的分布。即,在网中三角的
大小变化时,表达向点密度增加的方向移动,尽管很多小三角并不比稍大
的三角具有更重要的几何意义。这种效应优选借助所谓的平方误差来减小
或消除。
平方误差是对任意点与原始平面间的实际距离的二次近似,并表示允
许近似误差。在此,预先给定一具有法向矢量ni的三角Ti,其中,位于附
近的点x与Ti的平方距离为(nTix-nTiai)2,其中,ai是三角Ti的一个任
意角点。此外,例如对三角网中的每个顶点预先给定一平方误差,其中,
对每个相邻三角求平方距函数的和。例如,如果所有相邻的三角都位于一
个平面内,则可将公共点在该平面内移动,而不改变表面的几何结构。如
果该点位于一条边上,即所有相邻三角位于两个不同的平面内,则点沿着
该边的移动不会造成几何误差。在一般情况下,对于非共面的三角,点的
移动不可能不带来几何失真,但平方误差允许至少使误差的量化与移动方
向有关。在图17至图20中,示出了具有不同允许近似误差的不同的三角
网,为使结果三角网的复杂度能够调节,采用了“顶点簇”技术。在图17
至20所示的三角网中,允许近似误差分别为0mm、1mm、2mm和4mm。
对于网简化使用了平方误差技术,其中,对一个簇的所有三角的平方
距离求和,并由此为每个簇确定一个平方值。通常,该平方值不包含任何
未导致几何误差的点,但至少可找到一个点,对于该点,求和的平方距离
最小(“最优点”)。这里,对于簇表达给出了两种不同的定义。其一是可以
选出平方误差值最小的簇点。另一种是可选出与最优点距离最短的簇点。
后者是优选的实施方式。
将多个子网合并的实施与网格化所实施的实际结网策略相似。其中,
连接算法不是应用到相邻铣道,而是应用到各分块的边缘多边形。但与铣
道的情况完全一样,相邻的多边形基本上平行地延伸,由此减少需考虑的
特殊情况的数量。通过在读入数据点时记录三角相邻关系,将首先标识出
所有边缘边。这些边恰好就是只属于一个三角的边。为了闭合子网间的空
隙,将确定位于相对位置的边缘边,并将它们彼此连接起来。对于检索相
对置的边,预先给定了最大距离δ(在计算机程序产品中,该最大距离作为
自变量被传送)。通过这种限制可以保证,重构表面的外边缘不会被连接,
而是保持敞开。对与边缘边相对应的连接点的确定基本上与实际结网算法
相同,也是通过确定下一个贯穿点来实现的。在此要考虑的是,不能再采
用简化的反向连接,因为无法对边缘多边形的下标进行假设。出于这一原
因,确定各个连接点,并将对置边直接相互连接,由此在每个配属步骤中
产生两个三角形。在连接中产生的新边其本身再被作为边缘边。图21至23
示出了在相邻子网间被闭合的空隙,其中,将“处于相对位置”的边相互
连接起来。
以下将借助命令行变量以及其在各NC程序中的应用对计算机程序产
品进行描述。由于各算法是自动工作的,无需用户的交互。
例如,标以“mesh.c”的程序通过标准输入装置读入一个点文件,实施
结网,并通过标准输出以下述方式将结果再写到ASCII文件中:
mesh<IN_PTS>OUT_TRI (1)
用于该算法的参数和常数被调整到依经验确定的缺省值,但可以在源代码
文件的头中被改变。为了提高灵活性,当不期望对某些特殊的数组进行优
化时,可按下述方式借助相应的#define将算法的不同阶段开通或关闭:
#define REMOVE_ABOVE_MEDIAN/**/ (2)
#define ADJUST_TO_CLOSEST/**/
#define DELETE_NON_MONOTONIC/**/
/*#define REMOVE_LONGER_THAN_MAX_EDGE/**/
#define CONNECT_BACKWARDS/**/
#define PROCESS_U_LOOPS/**/
#define FILL_GAPS/**/
#define SWAP_EDGES/**/
另一个标以“raster.c”的程序是顶点簇算法的一种实现。以下述方式
可通过#define调整不同的算法变化:
/*#define FIND_SVD_POINT/**/ (3)
/*#define FIND_MINIMAL_QUADRIC_ERROR/**/
#define FIND_CLOSEST_TO_CENTER_OF_GRAVITY/**/
#define BAD_RASTER_DEBUG/**/
在基本版中,网栅的表达是通过中值确定的。所得到的网示出所涉及
的阶梯形伪影。通过以下方式可以实现一种细化的方法:
/*#define FIND_SVD_POINT/**/ (4)
#define FIND_MINIMAL_QUADRIC_ERROR/**/
/*#define FIND_CLOSEST_TO_CENTER_OF_GRAVITY/**/
/*#define BAD_RASTER_DEBUG/**/
在此,对原始表面进行了明显改善的近似。以下述方式作出的变化可最后
产生最佳结果:
#define FIND_SVD_POINT/**/ (5)
/*#define FIND_MINIMAL_QUADRIC_ERROR/**/
/*#define FIND_CLOSEST_TO_CENTER_OF_GRAVITY/**/
/*#define BAD_RASTER_DEBUG/**/
该程序将按如下方式被调用:
raster IN_PTS IN_TRI EPS OUT_PTS OUT_TRI (6)
其中,raster.exe是编译过的程序的名称,IN_PTS是一点文件的名称,而
IN_TRI是一三角下标文件的名称(正如其由MESH.EXE所产生的)。EPS
是一给出最大允许近似误差的浮点值。结果相应地存储在文件OUT_PTS和
OUT_TRI中。
一标以“join.c”的程序的运行是这样实现的:
join IN_PTS IN_TRI EPSILON>OUT_TRI (7)
其中,IN_PTS是点的列表,IN_TRI是三角列表,EPSILON是表示待闭合
空隙的最大尺寸的浮点数。值EPSILON是必须的,以便将非相对置的边相
连接。在此,事先确定待估计的空隙的宽度。作为结果,产生一个包含已
有的和新产生三角的新三角列表。如果需将多个分离结网的网格相连接,
则须首先将它们转换为一个具有多个相连部分的公共网格,然后,JOIN程
序将该公共网格上的空隙闭合。在此预先给定了两个点列表:具有n1个数
据点的点列表P1,和具有n2个数据点的点列表P2。T1是涉及P1的三角
列表,而T2是涉及P2的三角列表。因此,(P1,T1)以及(P2,T2)构
成了两个分离的网。通过P=[P1;P2]可以轻易地将两个点列表相结合。
而在将两个三角列表相结合时,还须将对T2的下标进行匹配,即T=[T1;
T2+n1],其中,n1为点列表P1的长度。
综上所述,按照本发明,为了特别简便快速而且多维地进行表面再现
(Flaechenrueckfuehrung),在对利用按时间顺序序列形式的3D数据点所描
述的结构的表面进行重构的方法中,借助于线性内插这样对3D数据点进行
处理,使在时间顺序上直接相邻的3D数据点保持不变。