用于确定交点的装置和方法

文档序号:6553374阅读:293来源:国知局
专利名称:用于确定交点的装置和方法
技术领域
本发明总的来说涉及一种计算机装置以及数据处理方法和装置,其中确定在两个或多个几何对象之间的交点以及在一个几何对象中的自交点。并且更具体地说,本发明涉及一种可以有效地使用在计算机辅助设计、计算机辅助生产、快速成原型、有限元预处理、计算机动 画制作和其他应用中的计算机装置以及数据处理方法和装置,其中快速地确定在几何对象之间的正确交点。在本文中,将短语"几何对象的交点"定义为包括"在两个或多 个几何对象之间的交点"以及"在同一个几何对象中的自交点"。此 外,将短语"棋盘形格局表示"定义为包括在数学上定义的"棋盘形 格局表示"和"三角形表示"两者,并将短语"棋盘形格局"定义为 包括在数学上定义的"棋盘形格局"和"常规三角形"两者。
背景技术
在CAD (计算机辅助设计)和面向应用的产品研发中,现有技术 中的惯例是仅使用运行在CPU (中央处理器单元)上的程序来计算在 几何对象之间的交点。现有的多种途径提供了对所计算交点的质量的 或多或少的保证。然而,为了实现图形应用中的碰撞剔除,在Naga Govindaraju, Ming C丄in和Dinesh Manocha于2004年1月在UNC-CH 技术报告上发表的"Fast Collision Culling using Graphics Processors"中 提出了使用GPU (图形处理器单元)。尽管此革新并不局限于CAD,但是我们将用CAD相关术语来描 述在此革新背后的数学算法。在CAD中,表面可以为,参数表面。表面p(s,t),其中(s,t)eficRZ称为来自于闭合有界集 QER2至rS的映射。该表面是分段多项式的,即,通过拼凑以切线、 曲率或高阶连续性交切的有理样条(最少为一条)来构建该表面。在CAD内的有理分段多项式的标准表现形式是NURBS-非均匀有理B样 条。*低阶代数表面,例如平面(l阶),圆锥面(2阶)和圆环面(4 阶)。利用总阶数为1、 2或4的隐式多项式方程/(x, y, z)=0来描述 该代数表面,其中(x, y, z) er3。在CAD内的巨大挑战就是建立高质量模型。在这样的模型中,快 速高质量交点计算是为能够有效地设计高质量CAD模型所必需的。虽 然估计两个平面的交点是很简单的,但是两个NURBS表面p(s,t), (s,t) e Q i和r(u,v), (u,v) e 12 2的交点确是主要挑战。举例来说,用两个参数变量使两个表面都为双立方,例如3阶的。 交点问题p(s,t)-r(u,v)是用四个参数来解决3个多项式公式的问题,其 中每一个变量中的多项式阶数为3。假设建立了曲面r(u,v)的一个多项 式分段的精确的隐式表示q(x,y,z)-O,其中(u,v)eQ2。当r(u,v)为双立方 时,该隐式公式的总阶数为18。 一个表面的参数表示与其他表面的精 确的隐式表示q(p(s,t))-0的结合将未知数量减小到2。然而,由此产生 的问题如今就是用两个变量建立一个多项式公式的零集,其中这两个 变量中的多项式阶数都为54。因此,在CAD中遇到的交点问题通常是 非常具有挑战性的问题。近几年来,已经沿用了许多解决方案来计算在CAD类型的表面之 间的交点。通常,能够提供更多的计算的话,交点的质量将会越高。 流处理器提供了高计算性能。图形卡(GPU)具有一种流处理器类型 的结构。自2003年起所经历的图形卡的计算性能的快速提高开辟了使 用这些图形卡作为交点算法中的计算源的可能性。在交点计算中用作 流处理器的图形卡提供了低成本的高容量计算。因此,在交点计算中 结合一个或多个CPU与一个或多个GPU具有显著地提高有效的计算能
力而因此提高交点计算的质量的潜力。由Nathan A. Carr等人2002年在欧洲图形学学会的德国 Saarbriicken的2002年9月1-2日的Graphics Hardware 2002上发表的 "The Ray Engine"中公开了一种计算机系统,用于估计在射线与三脚 架之间的交点,以提供关于在"照相机"附近的射线交点的信息,其 中从该"照相机"中发出射线。描述了在GPU和CPU之间的协同工作, 然而GPU仅提供如刚才所述的那些交点,而且不能提供更复杂的拓扑信息。
关于几何对象交点的最简单的解决方案就是使两个具有三角形的 表面相互接近并让这些三角形交叉。另一种相对简单的解决方案是点 阵估计,其中在两个表面上计算曲线的点阵,而且来自每一个表面的 曲线点阵与其他表面相交叉。所标识的点可用来描绘出这些点落在其上的交点曲线。对于这两种解决方案,所计算的交点是对实际交点的 推测,而不是一种经过证实的计算。
对于某类低阶代数表示,存在对交点拓扑和几何图形的显式表示。 然而,对于一般的代数或参数表面的交点就不存在这样的显式表示。Homotophy延拓法是一种解决一个已知问题然后将该问题逐渐改 为一个更复杂问题的解决方案。在改变过程中监控该结果。交点算法 基于该解决方案而存在。递归法使用了一种分治策略。如果关于确定交点拓扑的问题过于 复杂,就将该问题分成子问题,其想法就是子问题比原问题容易解决。 然而,在这个解决方案中,必须一定要确保子问题要更为简单。否则 的话,问题将会在细分后变得更为复杂。该细分的解决方案可以在运 行于标准的CPU上时,确保找到所有在指定公差内的交点。然而,递 归法在计算上费用浩大。
步进法(marching)用于表面/表面交点中。这是一种从结果上的一点开始然后搜寻在接近于当前点的交点上的新的点的方法。当达到 奇点时,即其中表面法线消失的点,就会在决定如何继续该搜索时出现问题。步进法可以使用例如通过点阵估计或递归细分所生成开始点。 步进法不保证建立整个交点结构。二分法与步进法密切相关。就二分法来说,提供在一个交点曲线 上的两个或多个点,并在他们之间计算新的点。可以重复该处理直至 所有曲线分段都另人满意地接近真实的交点曲线。如果两个相邻点不 属于同一个交点曲线分支,二分的分段就不会集中于一点。对缺少集 中的检测可用于检测何时一个推测或建议的交点曲线是对包含多个交 点分支情况的曲解。在计算机辅助设计中,低质量的交点计算导致生成低质量的CAD 模型。点阵估计的方法通常比递归法快。然而,点阵估计不能检测单 数的交点,而且会遗漏交点分支。递归法更慢是因为它们搜寻在指定 公差内的保证的结果。因此,需要一种对保证的交点结果的快速计算。发明内容简要地并用一般术语来说,本发明提供了在交点计算和装置中的 改进,凭此可以实质上提髙数据处理速度,并保证质量在指定公差内。更具体地说,借助于实例而不必受此限制,本发明提供了一种对 将要运行在至少一个CPU上的交点处理的组合,该CPU对至少一个流处理器上的计算加强任务进行启动。当来自于至少一个流处理器的计算结果创建推测时,CPU用于估计该计算的正确性。当流处理器返回 经过检验的信息时,该信息可以直接用在受到CPU控制且运行在CPU
上的部分交点处理中,并有可能用于发起新的将由流处理器执行的计 算加强任务。换言之,该发明提供了一种交点计算处理,其提供了对 至少一个CPU和至少一个流处理器的使用,利用流处理器的计算能力 来执行计算机加强任务,例如生成对交点的拓扑和几何图形的推测, 然后通过检验处理将该推测用作指导。如果该推测在指定的公差内无 效,就用来自于该推测的信息来指导改进该推测的处理,并检验该结 果在指定的公差内有效。该改进的处理可以结合地使用CPU和流处理 器,并有可能包含多个重复。该解决方案还开辟了使用流处理器的计 算能力来检测空间上分离的几何对象或他们的法线集的可能性,或使 经过检验地接近法线集的范围或空间范围。因此,本发明满足长久以来存在的对以提高的处理速度进行增强 的交点计算的需求。本发明明显满足这些需求。因此,在本发明的第一方面中,提供了一种用于确定和建立关于 几何对象的交点拓扑的几何表示的计算机装置,其中利用任何的参数 表示、代数表示和棋盘形格局表示来描述该几何对象,该计算机装置 包括至少一个中央处理器单元(CPU),其可工作以执行部分交点算法, 初始化该交点算法的子算法,控制所述子算法并处理对交点计算结果的推测,其中该计算机装置进一步包括至少一个流处理器单元(SPU), 其可工作以接收来自于至少一个CPU的所述交点算法的子部分,并执行所述交点算法的子算法,结果生成建立所述推测所必需的信息,并将所述信息返回到所述至少一个CPU。本发明的计算机装置的优选和有利的实施例从所附的从属权利要求2-6中显而易见。在本发明的第二方面,提供了一种用于在计算机装置中确定和建 立关于几何对象的交点拓扑的几何表示的方法,其中该计算机装置包 括至少一个中央处理器单元(CPU),并用任何的参数表示、代数表示 和棋盘形格局表示来描述该几何对象,所述方法包括-在所述至少一个CPU中,初始化交点算法的子算法, -在所述至少一个CPU中,控制所述交点算法的子算法,-在所述至少一个CPU中,执行所述交点算法的子算法,以及-处理对交点计算结果的推测, 其中所述方法进一步包括-向所述计算机装置所包含的至少一个流处理器单元(SPU)发送所述交点算法的至少一个所述子算法,-所述至少一个SPU执行所述交点算法的子算法,结果生成建立所述推测所必需的信息,以及-将所述信息返回到所述至少一个CPU。本发明的计算方法的优选和有利的实施例从所附的从属权利要求8-26中显而易见。当参考示范性实施例的附图时,本发明的这些和其他目的将从以 下更加详细的描述中显而易见。


图1显示了根据本发明实施例的计算机装置的一般结构,图2显示了对NURBS表面的闭塞测试的实例,图3显示了从三角形扩展到体积的二维简化图,用以建立NURBS 表面的法线域,以及图4显示了对NURBS表面的自交点问题中的向量角进行比较的 实例。
具体实施方式
现有技术中交点算法的一种典型实例是将交点计算划分成一种拓 扑相位,该拓扑相位检测候选曲线上的点,例如通过点阵估计来检测,
继之以候选曲线的步进或二分。另一种实例是利用递归细分来检测交点拓扑的第一步骤,以及通 过二分法或步进法来细化该检测的曲线的后续步骤。本发明包含两个主要部分 关于在处理当中的交点计算的算法内的结构,该处理包括以下步骤1. 在一个或多个CPU上开始交点计算。2. 利用一个或多个流处理器来计算关于交点曲线几何图形和/或拓扑的推测。3. 检验和校正该交点推测,它有可能包括关于原问题的子部分的第二步骤的重复。 ,在一个或多个流处理器上执行该交点算法的计算加强部分,并 在受控且部分地于一个或多个CPU上执行的算法中运用来自于一 个或 多个流处理器的计算。在上述装置中,其中能够在一个或多个CPU或者一个或多个流处理器上运行的子处理是,处理几何对象以提取用于确定两个或多个对象是否重叠的信息。 处理几何对象以提取用于确定两个几何对象的法线向量域是否 可能重叠的信息。 处理几何对象以计算对象范围的近似值,保证包含该几何对象 的范围的近似值。 处理几何对象以计算对象的法线域范围的近似值,该近似值保 证包含该几何对象的法线域。 以棋盘形格局布置几何对象 计算几何对象的偏导数,或者在点上进行计算或者作为闭合公 式计算, 计算几何对象的法线,或者在点上进行计算作或者作为闭合公
式计算。优选的实施方式是包含一个或多个流类型处理器的标准PC,其运行比如说Windows、 Linux或其他操作系统,优选为GPU。然而,本发 明针对在任何操作系统上的任何一种CPU和流处理器结构。关于GPU, 目前优选为包含一个或多个GPU的一个或多个图形卡。然而,该想法 并不局限于图形卡。应当注意该一个或多个CPU和一个或多个流处理 器可以使用不同浮点精度。在一个或多个CPU中的算法一般将会使用 64位的浮点表示,而在一个或多个GPU上的算法一般将会使用32位 的浮点表示。图l是一种相关结构的简化图,其中一个或多个CPU和一个或多 个GPU都连接到高速总线,例如PCI Express总线。另外做为选择地, GPU可以连接到在2004年广泛用在PC中的AGP总线。实例利用一个或多个GPU分离对象,关于NURBS表面的实例假设两个未经整理的NURBS表面交叉。 一个实例是在一个或多 个CPU和一个或多个GPU的结合上执行交叉。该算法利用碰撞剔除和 多个预定的观察方向。在碰撞测试中, 一种可供选择的方案是在执行 碰撞测试时使用贝塞儿曲线子片段的凸形外壳,另一种可供选择的方 案是使用SLEVE。 SLEVE的数学运算可以在2003年11月西雅图的 SIAM会议的进行过程中的"J.Peters,Mid-structures of Subdividable Linear Efficient Function Enclosures Linking Curved and Linear Geometry"中找到,Nashboro Press 2004。同样可以使用这两种解决方 案的组合。在图2的左边,我们可以在第一观察方向的基础上看到碰 撞剔除前的多边形。在该图的右边,我们可以看到碰撞剔除的结果。检验两个NURBS表面的重叠(表面A和表面B)l.在Oslo算法的基础上对表面_八和表面—B进行结点插入算法的 初始化。为这两个表面估计用于将表面从NURBS表示转换成
贝塞儿曲线表示的离散B样条。2. —个或多个CPU或者GPU的碎片处理器组合输入信息,以将NURBS表面转换成贝塞儿曲线片段的格栅。3. 碎片处理器在两个参数方向上对每一个贝塞儿曲线片段进行预定次数的细分,以产生对每个表面的控制网,它位于该表面附 近。用Ref_A和Ref_B来表示这些细化的表面网4. 利用标签"未处理"来初始化Ref—A的所有贝塞儿曲线片段,并用标签"未处理"来初始化Ref一B的所有贝塞儿曲线片段。5. 对于每一个预定的观察方向a. 对于Ref—A的每一个未处理的贝塞儿曲线片段ReflAi,在 GPU上运用碰撞查询来确定ReflB的哪一个未处理的贝塞 儿曲线片段RefLBi使Ref一Ai的背面模糊。如果Ref_Ai的 背面不模糊,就将Ref—Ai标记为"经过处理"。b. 将ReLB中任何不使Ref一A的任何一个未处理的子片段的 背面模糊的贝塞儿曲线片段RefLBi标记为"经过处理"。c. 对于Ref_B的每一个未处理的贝塞儿曲线片段Ref一Bi,在 GPU上运用碰撞查询来确定Ref一A的哪一个未处理的贝塞 儿曲线片段RefLAi使Ref一B,的背面模糊。如果Ref_B;的 背面不模糊,就将Ref一Bj标记为"经过处理"。d. 将RefLA中任何不使RefLB的任何一个未处理的子片段的 背面模糊的贝塞儿曲线片段RefLAi标记为"经过处理"。e. 如果Ref一A和Ref_B的所有子片段都经过了处理,那么表 面A和B就不重叠。6. 记住Ref一A的哪些子片段与Ref—B的哪些子片段重叠。实例在GPU上分离两个表面的法线域,关于NURBS表面的实例在该实例中,建立两个表面的法线域并将它们表示为有理贝塞儿 曲线片段。可以将这些贝塞儿曲线片段细分为按要求的具体程度。对 于每一个这样的子片段,将包含投影到3D并能显示为点的格栅的控制 点。现在从Surf—A中提供一个这样的法线域贝塞儿曲线子片段Sub—A,
并类似地从Surf—B中提供Sub—B。我们想要比较来自Sub—A的所有三 个控制点的组合与来自Sub—B的所有三个控制点的组合。仅仅比较三 角形是不够充分的,因此我们选择将三角形扩展到体积。图3显示了 下述扩展的二维简化图(只有两个单位向量Ai, A2)在3D中,该扩展如下所示 '提供3个单位向量A],八2和八3, 建立C作为对AP八2和A3跨越的平面的向外的法线向量, ,假设Ap八2和A3按逆时针方向围绕C, *通过以下公式建立新的顶点A,' , A2'和A3' o A'=A乂(cos0一 A^(C' A。 o A2' = A2/(cos</)2)= A2/(C' A2) o A3' = A3/(cos03)= A3/(C A3) 注意,如果点积为零,则三角形跨越的角度等于^,而且一定发 生重叠。 画三角形o A! , A3和A2 o A/ , A2'和A3' 通过以下定义在同一平面的四个边界区域 o A!, A2, A2'禾口 A/ o A2, A3, A3'和A2' o A3, AP A"和A3' 因为不控制表面的法线方向,所以还必须围绕原点画镜面反射 的体积 画三角形-o -A。 -A2和-A3 o -A/ , -A3'和-A2' 通过以下定义在同一平面的四个边界区域 o -AP -A/ , -A2,禾卩-A2 o — A2, —A2' , —A3'和—A30 -A3, - A3' , -A1' 和-A, 我们称原体积和镜面反射的版本为镜面反射的扩展三角形。假设将要对两个未经整理的NURBS表面进行关于法线重叠的测 试。在至少一个CPU和一个GPU的组合上执行该算法的实例。检验两个B样条表面的法线域的重叠(表面A和表面B)1. 在Oslo算法的基础上对表面—八和表面_8进行结点插入算法的初始化。为这两个表面估计用于将表面从NURBS表示转换成 贝塞儿曲线表示的离散B样条。2. CPU或者GPU上的碎片处理器组合输入信息,以将NURBS表面转换成贝塞儿曲线片段的三个(有理的)。3. GPU建立这两个表面的每一个(有理的)贝塞儿曲线片段的精确的法线域。在表示该法线域的贝塞儿曲线片段上执行连续的 处理。4. GPU在两个参数方向上对每一个法线域有理贝塞儿曲线片段进行预定次数的细分,以产生对每一个表面法线域的控制网,它 位于该表面附近。用Ref_A和Ref_B来表示这些细化的法线 域表面网。5. 利用标签"未处理"来初始化Ref—A的所有贝塞儿曲线片段,并用标签"未处理"来初始化Ref—B的所有贝塞儿确实片段。6. 对于每一个预定的观察方向a. 对于Ref_A的每一个未处理的贝塞儿曲线片段Ref一Ai, 在GPU上运用碰撞查询来确定Ref_B的哪一个未处理的贝 塞儿曲线片段Ref—Bi包含镜面反射的扩展三角形,它使 Ref—Aj的镜面反射扩展三角形的背面模糊。如果Ref—Ai的 镜面反射扩展三角形的背面不模糊,就将Ref—Aj标记为"经 过处理"。b. 将Ref_B中任何包含镜面反射的扩展三角形而该三角形 不使Ref_A的任何一个未处理的子片段的背面的镜面反射扩展三角形模糊的贝塞儿曲线片段Ref一Bi标记为"经过处 理"。c. 对于Ref—B的每一 个未处理的贝塞儿曲线片段RefJBi,在 GPU上运用碰撞查询来确定Ref—A的哪一个未处理的贝塞 儿曲线片段RefLAi包含镜面反射的扩展三角形,它使ReflBi 的镜面反射的扩展三角形背面模糊。如果Ref—Bi的背面不模 糊,就将ReflBi标记为"经过处理"。d. 将Ref—A中任何包含镜面反射的扩展三角形而该三角形 不使Ref_B的任何一个未处理的子片段的背面的镜面反射 扩展三角形模糊的贝塞儿曲线片段Ref—Ai标记为"经过处 理"。e. 如果Ref一A和Ref_B的所有子片段都经过了处理,那么 表面A和B就不重叠。。7.记住Ref一A的哪些子片段与Ref_B的哪些子片段重叠。NURBS表面的自交点的实例正切连续曲面的法线域跨越的角度必须大于该表面的^,以能够进行自我返回,因此有可能自我交叉。自交点可以有两种类型*法线向量消失了的自交点。在此情况下,自交点可以是在表面内的闭环。该自交点曲线的两条轨迹在法线消失的点交切。,法线未消失的自交点。这两条轨迹并不交切,而将与表面的边界接触。在法线未消失的情况下,可以通过利用该表面建立表面边界的交点来标识在自交点曲线上的点。通过将NURBBS表面划分成子表面,并分析单独的子表面的表面 法线特性以及相邻子表面的法线特性,有可能标识该表面法线未消失 的情况。对于NURBS表面p(u,v),可以通过建立两个第一级偏导数的 叉积n(U,V)=pu(U,v) X pv(u,v)来生成关于该表面法线的相近描述。直接 将n(u,v)描述成NURBS表面。因为n(u,v)得零,所以要么n(u,v)的其中 一个顶点为零,要么这些顶点跨越的角度必须大于或等于兀。 为了比较一组一个至少三个规格化向量的集合跨越的角度是否小 于:r ,可以检验从该集合中任选的两个向量的所有可能的和是否跨距 小于n/2。在图4中,例举了关于平面内3个向量的情况。在图4的左边,三个向量跨越的角度小于n,可以看到其中任选的两个向量的和小于h/2。在右边,三个向量跨越的角度大于:i ,可以看到其中任选的 两个向量的和大于n/2。为了在子片段内建立未消失的法线,该法线域的顶点跨越的角度 应该小于n。为了执行该测试 首先测试法线域是否有任何一个顶点消失了。 使法线域表面的所有未消失的顶点规格化。 然后通过建立法线域的规格化顶点的所有选择的标积来检验法线域的顶点跨越的角度是否小于n /2,并检验是否所有标积都为正。'当以上标积为负时,检验它们是否跨距小于ji 。因此,首先建立一个用A表示的向量集,它包括从法线域的规格化顶点集合中任选 的两个向量的所有可能的和。如果来自集合A的两个向量的所有选择 的标积为正,则法线域跨越的角度小于^ ,而且该子片段的法线域是 未消失的。为了建立相邻的正切连续子片段的法线,其中该子片段是用跨距 小于n的连续正切平面连接的,利用这样的事实如果两个片段的跨距都小于Tt/2,那么这两个片段的组合的跨距就一定小于IT 。在以上测试中,标识跨距将会小于^i/2的片段。测试在NURBS表面内的消失法线的可能性1. 在Oslo算法的基础上初始化该表面。对用于将表面从NURBS表示转换成贝塞儿曲线表示的离散B样条进行估计。2. CPU或者GPU上的碎片处理器组合输入信息,以将NURBS表面转换成贝塞儿曲线片段的格栅(有理的)。 3. GPU的碎片处理器建立这两个表面的每一个(有理的)贝塞儿曲线片段的精确的法线域。在表示该法线域的贝塞儿曲线片段 上执行连续的处理。4. GPU的碎片处理器在两个参数方向上对法线域有理贝塞儿曲线片段进行预定次数的细分,以产生对每个表面法线域的控制 网,它位于该表面附近。用ReflA来表示该细化的法线域表面 网。5. 初始化纹理、标记,类似于在Ref—A的多个贝塞儿曲线片段的大小中。为每个贝塞儿子片段分配一个像素。6. 在GPU上,对于Ref—A的每一个子片段Ref一Ai 将与RefLAi对应的标记内的像素初始化为0。 如果Ref一Ai的任何一个系数向量得零,就将标记设置为2, 并进行到下一个子片段。将该系数向量长度规格化为1。,对于来自RefLAi的两个系数向量C和D的所有选择,建立C 和D的标积。如果该标积不为正,就将标记中的像素设置为1。*如果标记值为零,则该片段法线的跨距小于n/2,而且不可能 有子片段的自交点,继续进行到下一个子片段。,对于来自Ref一Ai的两个系数向量C和D的所有选择,建立等 于C+D的向量,并在纹理中存储向量Vect。 建立来自Vect的两个向量的所有选择的标积,如果该标积完 全不为正,则有可能有消失了的法线,将标记中的像素设置为2, 并继续进行到下一个子片段。7. 对于每一个子片段,将会在完成了之后进行,如果标记为0,则子片段法线的跨距小于n/2。如果两个相邻 的子片段都是标记为0,则它们只会沿着共享的边界或共享的转 角交叉。*如果标记为1,则子片段法线的跨距小于n但大于n/2。该子 片段会在共享边界或共享转角之外与一个相邻的片断交叉。,如果标记为2,则子片段法线的跨距大于或等于3T ,法线消失 了。在子片段内有可能有自交点。8.记住哪些子片段会具有消失了的法线,以及哪些相邻的子片段 会在共享边界外交叉。沿着边界与子片段样条进行边界交叉在已经标识了不可能有消失的法线的情况下,所有自交点都必须 接触表面边界。因此就可以通过分析在表面边界和该表面之间的交点 来跟踪自交点。在该设置中的一项挑战就在于当边界元与片段自己交 叉时,会得到与是否留意一致的结论。为了对其进行留意, 一种解决 方案是将该问题分成两个问题 沿着从该片段处移除的边界对该片段和子片段样条进行边界交 叉。该子片段样条应该与在该实例一开始确定消失的法线的可能性时 所使用的子片段样条相对应。,边界与子片段样条交叉。每一个子片段样条沿着该边界的标记 值都可以指导我们正确处理该边界交叉。利用对该边界相同的细分作为关于子片段样条的(在标记该标记 时提供)对于边界上的所有子元对于沿着该边界的所有子片段如果与子边界相同的子片段指示交点,唯一条件是标记为2 如果子片段与子边界属于的子片段相邻指示交点,唯一的条 件是标记大于0。如果子片段和子边界不相邻指示交点,唯一条件是框架重叠。
权利要求
1. 用于确定和找到关于几何对象的交点拓扑的几何表示的计算 机装置,其中利用参数表示、代数表示和棋盘形格局表示中的任意一 个来描述该几何对象,所述计算机装置包括至少一个中央处理器单元(CPU),其用于执行部分交点算法,初始化该交点算法的子算法,控 制所述子算法并处理对交点计算结果的推测, 其中所述计算机装置进一步包括至少一个流处理器单元(SPU),其 用于接收来自于所述至少一个CPU的所述交点算法的子算法,并执行 所述交点算法的所述子算法,结果生成为建立所述推测所必需的信息, 并将所述信息返回到所述至少一个CPU。
2. 根据权利要求1的计算机装置,其中所述至少一个CPU由至少一个图形处理器单元(GPU)构成。
3. 根据权利要求1的计算机装置, 其中所述至少一个SPU进一步用于建立所述推测并将该推测返回到所 述至少一个CPU。
4. 根据权利要求1的计算机装置, 其中如果几何处理系统需要的话,所述至少一个CPU进一步用于检验 所述推测的完整性和正确性。
5. 根据权利要求1的计算机装置,其中,所述装置用于确定至少两个不同的几何对象之间的交点。
6. 根据权利要求1的计算机装置,其中,所述装置用于确定在同一个几何对象内的自交点。
7. —种用于在计算机装置中确定和找到关于几何对象的交点拓 扑的几何表示的方法,其中该计算机装置包括至少一个中央处理器单 元(CPU),并用参数表示、代数表示和棋盘形格局表示中的任意一个 来描述该几何对象,所述方法包括-在所述至少一个CPU中,初始化交点算法的子算法,-在所述至少一个CPU中,控制所述交点算法的子算法,-在所述至少一个CPU中,执行所述交点算法的子算法,以及-处理对交点计算结果的推测,其中所述方法进一步包括-向所述计算机装置所包含的至少一个流处理器单元(SPU)发送所述交点算法的至少一个所述子算法, -所述至少一个SPU执行所述交点算法的子算法,结果生成为建立所述推测所必需的信息,以及 -将所述信息返回到所述至少一个CPU。
8. 根据权利要求7的方法, 其中所述至少一个SPU建立所述推测,并将该推测返回到所述至少一 个CPU。
9. 根据权利要求7的方法, 其中如果几何处理系统要求的话,所述至少一个CPU进一步检验所述 推测的完整性和正确性。
10. 根据权利要求7的方法,其中,确定至少两个几何对象之间的交点,且其中 所述至少一个SPU执行以下至少一个子处理-处理几何对象以提取用于确定两个或更多个对象是否重叠的"(曰息,-处理几何对象以提取用于确定该对象的指定子部分是否重叠 的信息,-处理几何对象以提取用于确定两个几何对象的法线向量域是 否重叠的信息,-处理几何对象以提取用于确定该对象的指定子部分的法线向量域是否重叠的信息, -处理几何对象来计算壳,该壳保证包含几何对象的壳, -处理几何对象来计算凸包,该凸包保证包含几何对象的凸包, -处理几何对象来计算壳,该壳保证包含几何对象的法线域, -处理几何对象来计算凸包,该凸包保证包含几何对象的法线域,-按棋盘形格局来布置几何对象,-计算几何对象的偏导数,在点内的,-计算几何对象的偏导数,作为闭合表达式,-计算几何对象的法线,在点内的,-计算几何对象的法线,作为闭合表达式。
11.根据权利要求io的方法,其中,按照以下方式在所述至少一个CPU和所述至少一个SPU之间共享确定交点的任务-所述至少一个CPU初始化该交点确定处理,-所述至少一个SPU处理该几何对象以提取信息来确定对象壳是否重叠,-所述至少一个CPU利用来自于所述至少一个SPU的所述信息来报告是否可能有交点。
12. 根据权利要求11的方法, 进一步包括以下处理步骤-如果可能有交点,就在所述至少一个CPU和所述至少一个SPU 的任意一个上按棋盘形格局布置该几何对象,-所述至少一个SPU计算该棋盘形格局对象的交点,还在参数元组有效时返回这样的元组,-所述至少一个CPU处理通过所述至少一个SPU计算的交点, 并返回所述计算的交点作为对完全交叉的推测。
13. 根据权利要求12的方法, 其中-对于棋盘形格局表示的参数对象,为该棋盘形格局的顶点分配 参数元组,该参数元组与正在进行棋盘形格局布置的几何对象 中的点位置相对应。
14. 根据权利要求12的方法, 进一步包括以下步骤-通过在细分型检验处理中使用推测作为指导,所述至少一个 CPU处理该交点推测来确定其是否在拓扑上正确以及在用户 指定的公差内。
15. 根据权利要求14的方法,其中,根据用户需要,按以下任何一种方式来实现交点推测的处-对正确性问题返回简单的是/否/未定,-提供对问题区域的指示,-提供满足用户要求的交点推测的修正。
16. 根据权利要求7的方法,其中,为了计算两个几何对象的交点,按以下方式在所述至少一 个CPU和所述至少一个SPU之间共享该任务 -所述至少一个CPU初始化该交点计算,-所述至少一个SPU处理该几何对象以提取信息来确定凸形的对象壳是否重叠, -如果几何对象具有可能的交点,所述至少一个CPU或所述至少一个SPU提取用于确定两个几何对象的法线向量域是否重叠的信息,-如果该法线向量域重叠,就报告还未标识正确的交点,-如果法线向量域的凸包不重叠,意味着所有交点都接触几何对象之一的边界,则每一个对象的边界与所述至少一个CPU和 所述至少一个SPU的任意一个上的其他对象交叉,以及-报告该结果生成的交点来表示所有交点。
17. 根据权利要求16的方法, 进一步包括以下任何一个处理步骤-当考虑到用户指定的关于交点表示的精确度时,使用步进法来连接相应的边界点, -当考虑到用户指定的交点表示的精确度时,使用二分法来连接相应的边界点。
18. 根据权利要求16的方法,其中,如果法线向量域重叠的话,就按以下方式替换指定的功能-如果可能有交点,就在所述至少一个CPU和所述至少一个SPU的任意一个上按棋盘形格局布置该几何对象,-所述至少一个SPU在该棋盘形格局对象的基础上计算交点推 观'J,如果参数元组在该棋盘形格局中有效的话,就用该信息来 提供关于所提供的交点结构的参数元组,-通过在细分型检验处理中使用所述推测作为指导,所述至少一 个CPU处理由所述至少一个SPU提供的所述交点推测来确定 其是否在拓扑上正确以及在用户指定的公差内。
19. 根据权利要求18的方法,其中,对于棋盘形格局表示的参数对象,为该棋盘形格局的顶点 分配参数元组,该参数元组与正在进行棋盘形格局布置的几何对象中 的点位置相对应。
20. 根据权利要求18的方法,其中,根据用户需要,按以下任何一种方式来实现交点推测的CPU处理-对正确性问题返回简单的是/否/未定,-提供对问题区域的指示,-提供满足用户要求的交点推测的修正。
21. 根据权利要求7的方法,其中,确定几何对象内的自交点, 而且其中所述至少一个SPU执行以下至少一个子处理-处理几何对象以提取用于确定所述对象的不相邻子部分的凸包是否重叠的信息, -处理几何对象或其子部分以提取用于确定法线向量域跨越的角度是否小于或等于n的信息, -处理几何对象或其子部分以提取用于确定法线向量域跨越的角度的信息,-处理几何对象来计算凸包,该凸包保证包含所述几何对象或其 子部分的凸包,-处理几何对象来计算凸包,该凸包保证包含所述几何对象或其子部分的法线向量域, -按棋盘形格局来布置几何对象, -计算几何对象的偏导数,在点内的, -计算几何对象的偏导数,作为闭合表达式, -计算几何对象的法线,在点内的, -计算几何对象的法线,作为闭合表达式。
22. 根据权利要求21的方法,其中,按照以下方式在所述至少一个CPU和所述至少一个SPU之间共享该确定任务-所述至少一个CPU初始化该交点确定处理,-所述至少一个SPU处理该几何对象以提取信息来确定对象法线向量域的跨距,-所述至少一个CPU利用来自于所述至少一个SPU的所述信息 来报告是否可能有自交点。
23. 根据权利要求22的方法, 进一步包括以下处理步骤-如果可能有自交点,就在所述至少一个CPU和所述至少一个 SPU的任何一个上按棋盘形格局布置该几何对象,-所述至少一个SPU计算该棋盘形格局对象的自交点,还在参数 元组有效时返回这些参数元组,以及-所述至少一个CPU处理由所述至少一个SPU计算的自交点, 并返回所述计算的自交点作为对完全交叉的推测。
24. 根据权利要求23的方法,其中,对于棋盘形格局表示的参数对象,为该棋盘形格局的顶点 分配参数元组,该参数元组与正在进行棋盘形格局布置的几何对 象中的点位置相对应。
25. 根据权利要求23的方法, 进一步包括以下步骤-通过使用推测作为细分型检验处理中的指导,所述至少一个 CPU处理由所述至少一个SPU提供的交点推测来确定其是否 在拓扑上正确以及在用户指定的公差内。
26.根据权利要求25的方法,其中,根据用户需要,按以下任何一种方式来实现交点推测处理: -对正确性问题返回简单的是/否/未定, -提供对问题区域的指示,-提供满足用户要求的自交点推测的修正。
全文摘要
在用于确定在几何对象之间的交点的数据处理系统中,在CPU和流处理器之间分离该项工作。交点确定受到CPU的控制。在流处理器上运行交点算法的数据处理加强部分,例如检验可能的对象重叠,检验对象的法线域的重叠,使对象范围接近,使对象的法线域接近,或进行关于在对象之间的交点拓扑和/或几何图形的推测。该运行的流处理器上的算法部分的结果由运行在CPU上的部分算法所使用。当在流处理器上处理关于计算结果的推测时,由运行在CPU上的算法来检验该推测的正确性。如果正确性检验显示该结果是不完全的或错误的,就在CPU上运行该算法的附加部分,并有可能在流处理器上运行该算法的附加部分。
文档编号G06T15/00GK101147140SQ200580044048
公开日2008年3月19日 申请日期2005年12月8日 优先权日2004年12月21日
发明者延斯·奥拉夫·尼高, 托尔·多肯, 特朗德·鲁纳尔·哈根, 维伯克·许特 申请人:辛芬特公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1