CN106202247A - 一种基于经纬度的碰撞检测方法 - Google Patents
一种基于经纬度的碰撞检测方法 Download PDFInfo
- Publication number
- CN106202247A CN106202247A CN201610497328.8A CN201610497328A CN106202247A CN 106202247 A CN106202247 A CN 106202247A CN 201610497328 A CN201610497328 A CN 201610497328A CN 106202247 A CN106202247 A CN 106202247A
- Authority
- CN
- China
- Prior art keywords
- dimension
- longitude
- tri patch
- latitude
- skip list
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Processing Or Creating Images (AREA)
Abstract
一种计算机检测技术领域的一种基于经纬度的碰撞检测方法,包括:(1)预处理三角面片,初始化经纬度数据结构;(2)遍历三角面片,得到各维度所有三角面片形心中心,并进行记录;(3)再次遍历所有的三角面片,计算经度与维度,存放到经纬度数据结构中;(4)计算刀尖面片的经纬度,找到待碰撞面片中最匹配的三角面片,进行精确检测(5)某个三角面片发生变形,拓扑重构的过程只需要对该三角面片进行删除再插入即可;通过经纬度的思想使得所有三角面片的三维坐标转为二维坐标,修改删除与查找都能达到的时间复杂度,提高了碰撞的查询效率,同时增强了查询效率的稳定性,提高了更新节点的效率。
Description
技术领域
本发明属于计算机检测技术领域,具体涉及一种基于经纬度的碰撞检测方法。
背景技术
随着计算机硬件技术的不断发展,虚拟手术已成为计算机科学的一个重要研究领域,在虚拟手术环境中,由于虚拟手术刀具的移动,与人体的肌肉等网格模型经常可能发生碰撞。为了保持后续的软组织形变,需要系统及时检测到这些碰撞,并作相应的碰撞反应,同时在计算完毕后快速更新数据。
通常碰撞检测基于空间域的角度可以分为基于实体空间碰撞检测方法与基于图像空间碰撞检测方法两种。由于图像空间碰撞检测本身是空间离散采样的,其精度受图形分辨率的约束,从而影响碰撞检测的经度,而且该类方法只能适用于图面,因此在虚拟手术系统中的碰撞检测对图形空间碰撞检测不作考虑。而实体空间碰撞检测目前研究最多使用最广泛的则是基于层次包围体树的检测方法。但是该类方法的高效检测则是基于建立一个较为平衡的包围体树的前提下,如果包围体树建立的不平衡,会导致部分节点查询的效率低下。同时,对于节点更新则需要重新自底向上或者自顶向下扫描包围体树,从而达到更新包围体树,这个更新包围体树的过程,几乎就是重新构建一个新树,会严重降低虚拟手术在切割变形操作后的再次碰撞的速度。
发明内容
本发明提供了一种基于经纬度的碰撞检测方法,通过利用经纬度使得空间的所有三角形的三维坐标成为了二维坐标,然后对各个维度分配一个跳表结构,经度则为跳表排序的关键字,使得碰撞检测与更新速度都能达到跳表所能有的高效,提高了碰撞的查询效率,同时增强了查询效率的稳定性,提高了更新节点的效率。
一种基于经纬度的碰撞检测方法,包括如下步骤。
(1)对场景中待碰撞的刚体或者软组织物体的边界三角面片信息进行预处理,获取三角面片形心的z坐标最大值Zmax与z坐标最小值Zmin,以及所有三角面片的平均边长length_avg,初始化经纬度数据结构中维度与跳表数组下表的对应关系,同时动态申请三角面片数量大小的动态指针数组,初始化都为NULL,用于存储跳表中的单元地址。
(2)遍历三角面片集合,得到各个维度的所有三角面片形心的平均值(中心坐标),记录到经纬度数据结构中。
(3)遍历所有的三角面片,每个三角面片都计算得到形心坐标,根据形心坐标得到所处的维度,根据该维度的中心坐标,获取经度,存入对应维度的跳表中。
(4)对外部三角面片集合进行碰撞检测时候,计算外部三角面片的形心坐标,根据z坐标得到维度,根据维度得到维度中心坐标,计算经度后在该维度的跳表中查询最近的经度的三角面片,进行两个三角面片进行精确碰撞检测。
(5)某个三角面片在外力的作用下发生变形,拓扑重构的过程只需要对该三角面片进行删除后再插入即完成更新。
所述的步骤(1)中,初始化经纬度数据结构中维度与跳表数组下表的对应关系的实现过程为:首先计算维度最大值Dimension_Max = (int)((Zmax-Zmin)/ length_avg)+1;然后申请Dimension_Max大小的跳表结构数组;最后得到跳表的下表i与维度的关系则是i = Dimension-1。
所述的步骤(2)中,得到各个维度的所有三角面片形心的平均值(中心坐标)的实现过程为:首先申请维度最大值Dimension_Max大小的三个double数组,分别代表各个维度的x,y,z的累加;然后遍历被检测物体的所有的表面三角面片,每个三角面片都计算其形心坐标(x,y,z),得到对应的维度w=(int)((Zmax-z)/length_avg)+1,在三个double数组的下标为w-1的位置,分别累加x,y,z的值,最后三个数组的每个元素都除以三角面片的集合的个数。
所述的步骤(3)中,当第m个三角面片插入时,由该m号三角面片的形心坐标,得到维度为w,得到经度为p,那么使用跳表数组的w-1号跳表,则按照经度p作为该跳表的关键字,按照从小到大的排序方式,找到对应的插入位置,申请一个结构体的内存空间,内部存放当前三角面片的序号,插入其中。
所述的步骤(4)中,进行两个三角面片进行精确碰撞检测的实现过程为:首先进行包围盒的检测,然后进行穿越算法进行检测。
所述的步骤(5)中,对于发生变形的三角面片,根据存储着其跳表中地址的动态数组,根据三角面片的下标得到其跳表中的地址,可以快速进行删除,然后重新计算三角面片的形心,重新计算其维度与经度,加入到对应维度的跳表中。
所述的跳表为是一种随机化的数据结构,基于并联的链表,实现简单,插入、删除、查找的复杂度均为O(logN),跳表也是链表的一种,且它在链表的基础上增加了跳跃功能,正是这个跳跃的功能,使得在查找元素时,跳表能够提供O(log n)的时间复杂度,同样,删除,添加都是上限为O(log n)的时间复杂度,它的最底层是所有元素的一个链表,而没上一层,则只有下一层的部分元素,对于每一个元素,其是否在上一层出现的准则是按照概率,50%的可能会出现在上一层。因此上一层的元素应该是有序的,而且从概率上看是下一层元素的50%。
本发明的有益技术效果是:通过利用经纬度的思想使得空间的所有三角形的三维坐标成为了二维坐标,然后按照各个维度分配一个跳表结构,经度则为跳表排序的关键字,使得碰撞检测与更新速度都能达到跳表所能有的高效,达到了的时间复杂度,提高了碰撞的查询效率,同时增强了查询效率的稳定性,提高了更新节点的效率。
附图说明
图1为本发发明碰撞检测新方法的步骤流程示意图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的碰撞检测方法进行详细说明。
如图1所示,一种基于经纬度的碰撞检测方法,包括如下步骤。
(1)初始化经纬度数据结构,生成跳表数组与动态指针数组;
对场景中待碰撞的刚体或者软组织物体的边界三角面片信息进行预处理,使用三个浮点型变量,两个变量用来记录三角面片形心z的最大与最小值,还有一个浮点型变量length_avg用来累加每一个三角形的平均边长,在扫描一遍后,除以三角面片的总数,然后就获取了z坐标最大值Zmax与z坐标最小值Zmin,以及所有三角面片的平均边长length_avg,计算维度最大值Dimension_Max = (int)((Zmax-Zmin)/ length_avg)+1,初始化经纬度数据结构中维度与跳表数组下标的对应关系,例如定义一个函数,函数的传入参数是维度w,传出的参数就是跳表的下标i,跳表的下表i与维度的关系则是i = Dimension-1。
动态申请三角面片数量大小的动态指针数组,初始化每个指针都为NULL,每个指针未来都存储当三角面片加入跳表时期在跳表底层链表中的单元地址,可以方便在删除三角形的时候,根据这个地址直接找到三角面片在跳表中的位置,能将其O(1)时间找到,然后删除,这里由于在修改三角面片的时候,先知道三角面片信息发生变化,无法根据其经纬度来查找原始信息,必须要使用该指针数组来辅助搜索。
(2)得到各个维度的中心坐标;
申请维度最大值Dimension_Max大小的三个double数组,分别代表各个维度的x,y,z的累加;然后遍历被检测物体的所有的表面三角面片,每个三角面片都计算其形心坐标(x,y,z),得到对应的维度w=(int)((Zmax-z)/length_avg)+1,在三个double数组的下标为w-1的位置,分别累加x,y,z的值,最后三个数组的每个元素都除以软组织表面三角面片的总数,得到相应的各个维度的中心坐标。
(3)将所有软组织的表面三角面片添加到各自对应维度的跳表中;
遍历所有的软组织的三角面片,每个三角面片都计算得到形心坐标(x,y,z),根据形心坐标中的z,按照w=(int)((Zmax-z)/length_avg)+1得到所处的维度,根据维度找到对应的跳表数组的下标,然后找到该跳表,同时根据该维度的中心坐标,与当前的三角面片的形心坐标(x,y,z)得到一个向量M,计算M与(1,0,0)矢量的弧度,从(1,0,0)矢量逆时针开始计算弧度,该弧度就是经度。以经度为关键搜索字,搜索跳表的最佳插入位置,然后将该三角面片的序号作为信息插入到跳表中,并将插入的跳表的底层的位置的地址记录到动态数组中。
(4)对虚拟器具的某个三角面片与软组织进行碰撞检测;
对外部三角面片集合进行碰撞检测时候,计算外部三角面片的形心坐标(x,y,z),根据z坐标得到维度w=(int)((Zmax-z)/length_avg)+1,根据维度得到当前维度的中心坐标,计算经度后在该维度的跳表中查询最近的经度的三角面片,对搜索出来的三角面片与外部的三角面片进行精确的碰撞检测,即一个三角形的三条线段是否与另外一个三角形有直接碰撞,得到碰撞结果。
(5)更新经纬度数据结构;
某个序号为N的三角面片在外力的作用下发生变形,拓扑重构的过程只需要在动态指针数组中,找到序号为N的位置的地址信息,然后在跳表中删除该地址对应的节点,最后重新将序号为N的三角面片计算形心,得到维度,得到经度,存储到经纬度数据结构中。
本实施方式通过利用经纬度的思想使得空间的所有三角形的三维坐标成为了二维坐标,然后按照各个维度分配一个跳表结构,经度则为跳表排序的关键字,使得碰撞检测与更新速度都能达到跳表所能有的高效,达到了的时间复杂度,提高了碰撞的查询效率,同时增强了查询效率的稳定性,提高了更新节点的效率。
Claims (7)
1.一种基于经纬度的碰撞检测方法,其特征在于,包括以下步骤:
(1)对场景中待碰撞的刚体或者软组织物体的边界三角面片信息进行预处理,获取三角面片形心的z坐标最大值Zmax与z坐标最小值Zmin,以及所有三角面片的平均边长length_avg,初始化经纬度数据结构中维度与跳表数组下表的对应关系,同时动态申请三角面片数量大小的动态指针数组,初始化都为NULL,用于存储跳表中的单元地址;
(2)遍历三角面片集合,得到各个维度的所有三角面片形心的平均值(中心坐标),记录到经纬度数据结构中;
(3)遍历所有的三角面片,每个三角面片都计算得到形心坐标,根据形心坐标得到所处的维度,根据该维度的中心坐标,获取经度,存入对应维度的跳表中;
(4)对外部三角面片集合进行碰撞检测时候,计算外部三角面片的形心坐标,根据z坐标得到维度,根据维度得到维度中心坐标,计算经度后在该维度的跳表中查询最近的经度的三角面片,进行两个三角面片进行精确碰撞检测;
(5)某个三角面片在外力的作用下发生变形,拓扑重构的过程只需要对该三角面片进行删除后再插入即完成更新。
2.根据权利要求1所述的基于经纬度的碰撞检测方法,其特征在于:所述的步骤(1)中,初始化经纬度数据结构中维度与跳表数组下表的对应关系的实现过程为:首先计算维度最大值Dimension_Max = (int)((Zmax-Zmin)/ length_avg)+1;然后申请Dimension_Max大小的跳表结构数组;最后得到跳表的下表i与维度的关系则是i = Dimension-1。
3.根据权利要求1所述的基于经纬度的碰撞检测方法,其特征在于:所述的步骤(2)中,得到各个维度的所有三角面片形心的平均值(中心坐标)的实现过程为:首先申请Dimension_Max大小的三个double数组,分别代表各个维度的x,y,z的累加;然后遍历被检测物体的所有的表面三角面片,每个三角面片都计算其形心坐标(x,y,z),得到对应的维度w=(int)((Zmax-z)/length_avg)+1,在三个double数组的下标为w-1的位置,分别累加x,y,z的值,最后三个数组的每个元素都除以三角面片的集合的个数。
4.根据权利要求1所述的基于经纬度的碰撞检测方法,其特征在于:所述的步骤(3)中,当第m个三角面片插入时,由该m号三角面片的形心坐标,得到维度为w,得到经度为p,那么使用跳表数组的w-1号跳表,则按照经度p作为该跳表的关键字,按照从小到大的排序方式,找到对应的插入位置,申请一个结构体的内存空间,内部存放当前三角面片的序号,插入其中。
5.根据权利要求1所述的基于经纬度的碰撞检测方法,其特征在于:所述的步骤(4)中,进行两个三角面片进行精确碰撞检测的实现过程为:首先进行包围盒的检测;然后进行穿越算法进行检测。
6.根据权利要求1所述的基于经纬度的碰撞检测方法,其特征在于:所述的步骤(5)中,对于发生变形的三角面片,根据存储着其跳表中地址的动态数组以及三角面片的下标得到其跳表中的地址,可以快速进行删除,然后重新计算三角面片的形心,重新计算其维度与经度,加入到对应维度的跳表中。
7.根据权利要求1、2、3、4、5、6所述的基于经纬度的碰撞检测方法,其特征在于:所述的跳表为一种随机化的数据结构,基于并联的链表,实现简单,插入、删除、查找的复杂度均为O(logN),由于跳表也是链表的一种,且在链表的基础上增加了跳跃功能,正是这个跳跃的功能,使得在查找元素时,跳表能够提供O(log n)的时间复杂度,同样,删除,添加都是上限为O(log n)的时间复杂度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610497328.8A CN106202247B (zh) | 2016-06-30 | 2016-06-30 | 一种基于经纬度的碰撞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610497328.8A CN106202247B (zh) | 2016-06-30 | 2016-06-30 | 一种基于经纬度的碰撞检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106202247A true CN106202247A (zh) | 2016-12-07 |
CN106202247B CN106202247B (zh) | 2017-10-13 |
Family
ID=57463392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610497328.8A Expired - Fee Related CN106202247B (zh) | 2016-06-30 | 2016-06-30 | 一种基于经纬度的碰撞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106202247B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111062135A (zh) * | 2019-12-18 | 2020-04-24 | 哈尔滨理工大学 | 一种精确的碰撞检测方法 |
CN111729311A (zh) * | 2020-06-22 | 2020-10-02 | 苏州幻塔网络科技有限公司 | 攀爬跳跃方法、装置、计算机设备及计算机可读存储介质 |
CN117547825A (zh) * | 2024-01-12 | 2024-02-13 | 腾讯科技(深圳)有限公司 | 碰撞数据的管理方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070268288A1 (en) * | 2004-03-24 | 2007-11-22 | Christian Duriez | Method and Device for the Interactive Simulation of Contact Between Objects |
CN101404039A (zh) * | 2008-03-28 | 2009-04-08 | 华南师范大学 | 一种虚拟手术的方法及其装置 |
CN102314710A (zh) * | 2011-09-26 | 2012-01-11 | 武汉大学 | 基于力异步扩散模型的医学组织动力学仿真方法 |
JP2012155152A (ja) * | 2011-01-26 | 2012-08-16 | Nagoya Institute Of Technology | 仮想脳外科手術シミュレータ |
CN103065305A (zh) * | 2012-12-25 | 2013-04-24 | 上海交通大学 | 虚拟手术训练系统中基于四面体的组织模型切割方法 |
US20140071072A1 (en) * | 2012-09-12 | 2014-03-13 | Fujifilm Corporation | Medical image display apparatus, method and program |
-
2016
- 2016-06-30 CN CN201610497328.8A patent/CN106202247B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070268288A1 (en) * | 2004-03-24 | 2007-11-22 | Christian Duriez | Method and Device for the Interactive Simulation of Contact Between Objects |
CN101404039A (zh) * | 2008-03-28 | 2009-04-08 | 华南师范大学 | 一种虚拟手术的方法及其装置 |
JP2012155152A (ja) * | 2011-01-26 | 2012-08-16 | Nagoya Institute Of Technology | 仮想脳外科手術シミュレータ |
CN102314710A (zh) * | 2011-09-26 | 2012-01-11 | 武汉大学 | 基于力异步扩散模型的医学组织动力学仿真方法 |
US20140071072A1 (en) * | 2012-09-12 | 2014-03-13 | Fujifilm Corporation | Medical image display apparatus, method and program |
CN103065305A (zh) * | 2012-12-25 | 2013-04-24 | 上海交通大学 | 虚拟手术训练系统中基于四面体的组织模型切割方法 |
Non-Patent Citations (2)
Title |
---|
DONG NI ET ALL: "A Virtual Reality Simulator for Ultrasound-Guided Biopsy Training", 《IEEE COMPUTER GRAPHICS AND APPLICATIONS》 * |
王沫楠 等: "基于软组织形变力学信息虚拟手术力反馈过程仿真", 《系统仿真学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111062135A (zh) * | 2019-12-18 | 2020-04-24 | 哈尔滨理工大学 | 一种精确的碰撞检测方法 |
CN111062135B (zh) * | 2019-12-18 | 2024-01-02 | 哈尔滨理工大学 | 一种精确的碰撞检测方法 |
CN111729311A (zh) * | 2020-06-22 | 2020-10-02 | 苏州幻塔网络科技有限公司 | 攀爬跳跃方法、装置、计算机设备及计算机可读存储介质 |
CN111729311B (zh) * | 2020-06-22 | 2024-05-10 | 苏州幻塔网络科技有限公司 | 攀爬跳跃方法、装置、计算机设备及计算机可读存储介质 |
CN117547825A (zh) * | 2024-01-12 | 2024-02-13 | 腾讯科技(深圳)有限公司 | 碰撞数据的管理方法、装置、设备及存储介质 |
CN117547825B (zh) * | 2024-01-12 | 2024-03-22 | 腾讯科技(深圳)有限公司 | 碰撞数据的管理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106202247B (zh) | 2017-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101532864B1 (ko) | 모바일 디바이스들에 대한 평면 맵핑 및 트래킹 | |
CN105590339B (zh) | 三维模型的碰撞检测方法及系统 | |
CN105654483B (zh) | 三维点云全自动配准方法 | |
CN104318622B (zh) | 一种室内场景非均匀三维点云数据的三角网格建模方法 | |
CN103268634B (zh) | 一种外存模型基于顶点聚类的快速并行自适应简化方法 | |
CN105389850A (zh) | 一种大规模三维场景的新型可见性生成方法 | |
CN110033519A (zh) | 基于隐式函数的三维建模方法、装置、系统及存储介质 | |
KR101741894B1 (ko) | 관리 프로그램, 관리 장치 및 관리 방법 | |
CN108053483A (zh) | 一种基于gpu加速的维诺图三维网格重构方法 | |
US11651569B2 (en) | System and method for mapping | |
CN106202247A (zh) | 一种基于经纬度的碰撞检测方法 | |
Yuan et al. | Feature preserving multiresolution subdivision and simplification of point clouds: A conformal geometric algebra approach | |
CN111695281B (zh) | 一种四面体网格划分有限元粒子模拟的粒子快速定位方法 | |
CN113610983A (zh) | 一种离散点空间曲面三角网格自动剖分方法 | |
Nienhuys et al. | A Delaunay approach to interactive cutting in triangulated surfaces | |
CN104408773A (zh) | 一种结构化网格非匹配界面插值的方法 | |
CN110110154A (zh) | 一种图文件的处理方法、装置及存储介质 | |
CN109961514B (zh) | 一种切割形变仿真方法、装置、存储介质及终端设备 | |
Azri et al. | Review of spatial indexing techniques for large urban data management | |
CN104090945B (zh) | 一种地理空间实体构建方法及系统 | |
JP2015106228A (ja) | データ探索装置、データ探索装置の制御方法およびデータ探索装置の制御プログラム | |
CN116168174A (zh) | 建筑物缺失结构点云的修补方法及装置 | |
Guo et al. | Improved marching tetrahedra algorithm based on hierarchical signed distance field and multi-scale depth map fusion for 3D reconstruction | |
KR20080055327A (ko) | 룩업 테이블을 이용한 레이 트레이싱 장치 및 방법 | |
Hou et al. | Poisson disk sampling in geodesic metric for DEM simplification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171013 Termination date: 20200630 |