Opencascade 选择器算法
算法的阶段
该算法包括预处理和三个主要阶段。
使用深度优先搜索逐层遍历所有对象 。
该算法包括预处理和三个主要阶段。
使用深度优先搜索逐层遍历所有对象 。
预处理
计算平截头体及其主要特征的计算。
第一阶段 - 遍历第一级BVH树
在成功构建选择平截头体之后,算法开始遍历对象级BVH树。根据分离轴定理(separating axis theorem
SAT)的项,测试包含轴对齐边界框的节点与选择平截头体的重叠。当遍历向下到叶节点时,这意味着已找到具有可能重叠的感知实体(sensitive entity)的候选对象。如果没有检测到这样的对象,则算法停止并且假设不需要选择任何对象。否则,它将传递到下一个阶段以处理找到的可选对象的实体。
第二阶段 - 遍历第二级BVH树
在这个阶段,有必要确定一个对象的所有感知实体中是否存在候选者。
首先,在此阶段,算法检查是否存在对当前对象应用的任何变换。如果它有自己的位置,那么相应变换的平截头体将用于进一步的计算。在下一步骤,访问给定对象的第二级BVH树的节点以搜索重叠叶。如果没有找到这样的叶子,则算法返回到第二阶段。否则,它会通过执行以下检查来开始处理找到的实体:
- 激活检查 - 当前实体可能处于非活动状态,因为它属于未激活选择器;
- 公差检查 - 当前选择平截头体可能太大而无法进一步检查,因为它始终以所有激活实体中的最大公差构建。因此,在该步骤中,可以缩放平截头体。
在这些检查之后,算法进入最后阶段。
第三阶段 - 特定敏感实体的重叠或包含测试
如果实体是原子的,则执行简单的SAT测试。在复杂实体的情况下,遍历第三级BVH树。分析匹配的敏感实体的定量特征(如深度,到几何中心的距离)并应用剪裁平面(如果它们已经设置)。存储检测结果并且算法返回到第二阶段。
Opencascade 选择器算法的更多相关文章
- Delaunay Triangulation in OpenCascade
Delaunay Triangulation in OpenCascade eryar@163.com 摘要:本文简要介绍了Delaunay三角剖分的基础理论,并使用OpenCascade的三角剖分算 ...
- 设计简单算法体验Vivado HLS的使用
前言 本文主要讲解了使用Vivado HLS设计简单C语言的二选一选择器算法的硬件HLS开发的全流程,包括工程创建-算法验证和仿真-算法综合-RTL仿真-IP封装等步骤. 参考网站: http://b ...
- 使用这些 CSS 属性选择器来提高前端开发效率
属性选择器非常神奇.它们可以使你摆脱棘手的问题,帮助你避免添加类,并指出代码中的一些问题.但是不要担心,虽然属性选择器非常复杂和强大,但是它们很容易学习和使用.在本文中,我们将讨论它们是如何运行的,并 ...
- Topology and Geometry in OpenCascade-Adapters
Topology and Geometry in OpenCascade-Adapters eryar@163.com 摘要Abstract:本文简要介绍了适配器模式(adapter pattern) ...
- css选择器有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先
CSS选择器:基本可以分为通配选择器,标签选择器,类选择器,ID选择器,简单属性选择,具体属性选择,根据部分属性值选择,特定属性选择,从结构上来分还有后代选择器,子元素选择器,相邻兄弟选择器以及伪类. ...
- css选择器的优先级算法
1. 引言 浏览器CSS匹配顺序: 浏览器CSS匹配不是从左到右进行查找,而是从右到左进行查找. 比如#divBox p span.red{color:red;}, 浏览器的查找顺序如下: 先查找ht ...
- 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 ...
- OpenCASCADE BRep Projection
OpenCASCADE BRep Projection eryar@163.com 一网友发邮件问我下图所示的效果如何在OpenCASCADE中实现,我的想法是先构造出螺旋线,再将螺旋线投影到面上. ...
- OpenCASCADE Interpolations and Approximations
OpenCASCADE Interpolations and Approximations eryar@163.com Abstract. In modeling, it is often requi ...
随机推荐
- Linux限制端口
设置防火墙 iptables -a input -p 协议 -s 可以访问ip -dport端口 -j ACCEPT
- 【转】图像金字塔PyrDown,PyrUP
原文链接:http://blog.csdn.net/davebobo/article/details/51885043 [图像金字塔] 图像金字塔这个词,我们经常在很多地方可以看到.它是图像多尺度表达 ...
- Unity网格合并_材质合并[转]
http://blog.csdn.net/chenggong2dm/article/details/41699029
- angular源码剖析之Provider系列--QProvider
QProvider 简介 源码里是这么描述的: A service that helps you run functions asynchronously, and use their return ...
- SCUT - 249 - Hello World - 数位dp
https://scut.online/p/249 数位dp的模板题? 需要特殊判断0,这个很不优雅,因为0-1=-1是个很奇葩的东西? #include<bits/stdc++.h> u ...
- C++开发工程师面试题库 200~250道
199 MFC中SendMessage和PostMessage的区别?答:PostMessage 和SendMessage的区别主要在于是否等待应用程序做出消息处理.PostMessage只是把消息 ...
- HDU6024:Building Shops(DP)
传送门 题意 在一条直线上有n个教室,现在要设置糖果店,使得最后成本最小,满足以下两个条件: 1.若该点为糖果店,费用为cost[i]; 2.若不是,则为loc[i]-最近的糖果店的loc 分析 dp ...
- jmeter远程运行GUI多用户负载
1.在Jmeter控制机的bin目录下找到jmeter.properties文件并修改”remote_hosts”,增加负载机IP,多个IP使用英文逗号隔开,修改后要重启Jmeter.如下图: 2.添 ...
- python之条件判断、循环和字符串格式化
1. python的条件判断:if和else 在条件判断中可以使用算数运算符 等于:== 不等于:!= 大于:> 小于:< 大于等于:>= 小于等于:<= 示例1: usern ...
- 题解报告:poj 1738 An old Stone Game(区间dp)
Description There is an old stone game.At the beginning of the game the player picks n(1<=n<=5 ...