算法的阶段

该算法包括预处理和三个主要阶段。

使用深度优先搜索逐层遍历所有对象 。

预处理

计算平截头体及其主要特征的计算。

第一阶段 - 遍历第一级BVH

在成功构建选择平截头体之后,算法开始遍历对象级BVH树。根据分离轴定理(separating axis theorem 
SAT)的项,测试包含轴对齐边界框的节点与选择平截头体的重叠。当遍历向下到叶节点时,这意味着已找到具有可能重叠的感知实体(sensitive entity)的候选对象。如果没有检测到这样的对象,则算法停止并且假设不需要选择任何对象。否则,它将传递到下一个阶段以处理找到的可选对象的实体。

第二阶段 - 遍历第二级BVH

在这个阶段,有必要确定一个对象的所有感知实体中是否存在候选者。

首先,在此阶段,算法检查是否存在对当前对象应用的任何变换。如果它有自己的位置,那么相应变换的平截头体将用于进一步的计算。在下一步骤,访问给定对象的第二级BVH树的节点以搜索重叠叶。如果没有找到这样的叶子,则算法返回到第二阶段。否则,它会通过执行以下检查来开始处理找到的实体:

  • 激活检查 - 当前实体可能处于非活动状态,因为它属于未激活选择器;
  • 公差检查 - 当前选择平截头体可能太大而无法进一步检查,因为它始终以所有激活实体中的最大公差构建。因此,在该步骤中,可以缩放平截头体。

在这些检查之后,算法进入最后阶段。

第三阶段 - 特定敏感实体的重叠或包含测试

如果实体是原子的,则执行简单的SAT测试。在复杂实体的情况下,遍历第三级BVH树。分析匹配的敏感实体的定量特征(如深度,到几何中心的距离)并应用剪裁平面(如果它们已经设置)。存储检测结果并且算法返回到第二阶段。

Opencascade 选择器算法的更多相关文章

  1. Delaunay Triangulation in OpenCascade

    Delaunay Triangulation in OpenCascade eryar@163.com 摘要:本文简要介绍了Delaunay三角剖分的基础理论,并使用OpenCascade的三角剖分算 ...

  2. 设计简单算法体验Vivado HLS的使用

    前言 本文主要讲解了使用Vivado HLS设计简单C语言的二选一选择器算法的硬件HLS开发的全流程,包括工程创建-算法验证和仿真-算法综合-RTL仿真-IP封装等步骤. 参考网站: http://b ...

  3. 使用这些 CSS 属性选择器来提高前端开发效率

    属性选择器非常神奇.它们可以使你摆脱棘手的问题,帮助你避免添加类,并指出代码中的一些问题.但是不要担心,虽然属性选择器非常复杂和强大,但是它们很容易学习和使用.在本文中,我们将讨论它们是如何运行的,并 ...

  4. Topology and Geometry in OpenCascade-Adapters

    Topology and Geometry in OpenCascade-Adapters eryar@163.com 摘要Abstract:本文简要介绍了适配器模式(adapter pattern) ...

  5. css选择器有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先

    CSS选择器:基本可以分为通配选择器,标签选择器,类选择器,ID选择器,简单属性选择,具体属性选择,根据部分属性值选择,特定属性选择,从结构上来分还有后代选择器,子元素选择器,相邻兄弟选择器以及伪类. ...

  6. css选择器的优先级算法

    1. 引言 浏览器CSS匹配顺序: 浏览器CSS匹配不是从左到右进行查找,而是从右到左进行查找. 比如#divBox p span.red{color:red;}, 浏览器的查找顺序如下: 先查找ht ...

  7. Convert BSpline Curve to Arc Spline in OpenCASCADE

    Convert BSpline Curve to Arc Spline in OpenCASCADE eryar@163.com Abstract. The paper based on OpenCA ...

  8. OpenCASCADE BRep Projection

    OpenCASCADE BRep Projection eryar@163.com 一网友发邮件问我下图所示的效果如何在OpenCASCADE中实现,我的想法是先构造出螺旋线,再将螺旋线投影到面上. ...

  9. OpenCASCADE Interpolations and Approximations

    OpenCASCADE Interpolations and Approximations eryar@163.com Abstract. In modeling, it is often requi ...

随机推荐

  1. javascript ==等于与===恒等于

    ==判断是否等于,只判断数值 ===代表恒等于,不仅判断数值,而且判断类型 var a=5; var b="5"; (a b 只是数值上相等,但是类型并不相等) a==b //tr ...

  2. pymssql读取varchar字段中文显示乱码的问题分析

    问题 用python的pymssql模块读取旧业务系统后台SQL Server 2000数据库展示数据为乱码 开发环境 操作系统:windows 8 数据库 MS SQL Server 2000,默认 ...

  3. ccflow汇总帖

    视频教程学习 公司电脑路径; E:\开源工作流\ccflow佳怡物流版\ccflow\doc cclfow的码云地址: https://gitee.com/opencc/ccflow 在线demo演示 ...

  4. E20180423-hm

    disclosure  n. (发明等的) 公开; 泄露,揭露; 开诚布公的话; 被公开的事情,被披露的秘闻; alignment n. 结盟; 队列,排成直线; 校直,调整; [工] 准线; ali ...

  5. Apache Thrift 在Windows下的安装与开发

    Windows下安装Thrift框架的教程很多.本文的不同之处在于,不借助Cygwin或者MinGW,只用VS2010,和Thrift官网下载的源文件,安装Thrift并使用. 先从官网 下载这两个文 ...

  6. HDU 5101

    hdoj5101 lower_bound函数: 题意: 从两个不同集合拿出两个数,加的和大于k的可行的方案数 思路: 答案=从所有数中选择的两个加和大于k的数的方案数-在同一个集合中选择的两个加和大于 ...

  7. 修改 jq weui cityPicker.js原来的值

    1.对接后台接口,拿到返回来的值,注意数据格式要一样 var raw; $.ajax({ type: "GET", url: "/web/region/list.json ...

  8. [USACO10FEB]购买巧克力Chocolate Buying 【假背包真贪心】 By cellur925

    题目传送门 继续dp刷题计划,看到这道题,第一眼感觉不就是显然的完全背包嘛.把背包打完要开始填充数组大小的时候成为了mengbier,发现数据极大,达到了1e18.显然这不是一道平凡的背包题目. 于是 ...

  9. 语句 if

    1.if语句单项分支 #单项分支 if 55 < 133: print('这个比较运算是正确的') #输出结果:这个比较运算是正确的 2.if语句双项分支 #双项分支 if 55 > 14 ...

  10. bzoj 4860 [BeiJing2017]树的难题

    题面 https://www.lydsy.com/JudgeOnline/problem.php?id=4860 题解 点分治 设当前重心为v 假设已经把所有边按照出发点第一关键字, 颜色第二关键字排 ...