OBB盒的实现

2023-11-07

制造几何仿真中的碰撞检测通常视为针对刚体对象间的碰撞检测,这样的话可以把非刚体即软体的建模和变形算法对碰撞检测的影响减少到最小。常见成熟的基于包围盒的碰撞检测(box intersection test)算法如:

1)沿坐标轴的包围盒AABB(axis-aligned bounding boxes)在碰撞检测的研究历史中使用得最久最广, 一个给定对象的AABB被定义为包含该对象且各边平行于坐标轴的最小的六面体。

AABB间的相交测试也比较简单,两个AABB相交当且仅当它们在三个坐标轴上的投影区间均重叠。定义AABB的六个最大最小值分别确定了它在三个坐标轴上的投影区间,因此AABB间的相交测试最多只需要六次比较运算。

2)包围球类似于AABB,也是简单性好紧密性差的一类包围盒,包围球被定义为包含该对象的最小的球体,计算给定对象E的包围球,首先需确定包围球的球心c,再由球心与三个最大值坐标所确定的点间的距离计算半径r。包围球的计算时间略多于AABB,但存储一个包围球只需两个浮点数。

3)方向包围盒OBB(oriented bounding box)是比较著名的一个包围盒类型。一个给定对象的OBB被定义为包含该对象且相对于坐标轴方向任意的最小的长方体。OBB最大特点是它的方向的任意性,这使得它可以根据被包围对象的形状特点尽可能紧密地包围对象,但同时也使得它的相交测试变得复杂。

OBB间的相交测试基于分离轴理论(separating axis test)。若两个OBB在一条轴线上(不一定是坐标轴)上的投影不重叠,则这条轴称为分离轴。若一对OBB间存在一条分离轴,则可以判定这两个OBB不相交。对任何两个不相交的凸三维多面体,其分离轴要么垂直于任何一个多面体的某一个面,要么同时垂直于每个多面体的某一条边。因此,对一对OBB,只需测试15条可能是分离轴的轴(每个OBB的3个面方向再加上每个OBB的3个边方面的两两组合),只要找到一条这样的分离轴,就可以判定这两个OBB是不相交的,如果这15条轴都不能将这两个OBB分离,则它们是相交的。 

可以在运动过程中使用OBB进行初次碰撞检测,如果没有碰撞,则忽略进行下一个检测,如果发生碰撞,则调用更精细的碰撞检测。作者定义的包围盒(bounding box)和实现如下:

 

 

 

class Point3D 
{
public:
    double x;
    double y;
    do

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OBB盒的实现 的相关文章

  • 【Linux】解决Linux挂载的磁盘突然没有权限修改的问题

    可能由于异常关机导致磁盘挂在错误 我这的解决办法是 gt sudo ntfsfix dev sda3 Mounting volume The disk contains an unclean file system 0 0 Metadata
  • 网站服务器发生故障,全国DNS服务器发生故障

    关键词 DNS故障 网页打不开 上不去网 DNS 网站故障 从今天下午三点左右开始中心接受用户反映故障数十起 用户均反映网页打开有问题 中心客服人员调查后发现全国出现了大范围的DNS故障 导致大量网站域名解析不正常 此次DNS故障可能是国外
  • windows

    简介 RabbitMQ是一套开源 MPL 的消息队列服务软件 是由 LShift 提供的一个 Advanced Message Queuing Protocol AMQP 的开源实现 由以高性能 健壮以及可伸缩性出名的 Erlang 写成
  • rsa生成公钥秘钥中产生的问题

    解决 module object has no attribute newkeys 1 需要导入模块rsa 自己在学习的过程中遇到了以下的错误 显示没有这个属性 解决办法 1 检查是否有rsa模块 如果没有就下载该模块 进入cmd后输入py
  • APK反编译破解方法与加密措施

    所谓APK指的是Android操作系统的应用程序安装文件 所谓Crack 简单地理解为 破解 我具体指的是反编译APK文件进行汇编级的代码分析 并修改或插入自己的代码 重新签名打包为APK文件 以达到改变程序原有行为的目的 由以上的说明可知
  • MySQL-HAVING语句

    语法 SELECT column1 column2 column n aggregate function expression FROM tables WHERE predicates GROUP BY column1 column2 c
  • Loaded runtime CuDNN library: 7102 (compatibility version 7100) but source was compiled with 7004

    我被这个cuDNN可谓坑的很惨 最开始下载了7 1 1 for CUDA9 0 跑程序的时候出现了Loaded runtime CuDNN library 7101 compatibility version 7100 but source
  • 保存textarea编辑格式到数据库,并在div中正确显示出来

    一 保存textarea编辑格式到数据库 在textarea中输入回车符 在js读取textarea中的值有 r n然后到业务层转换到string中就有可能变成空格形式然后被存入数据库 当在取出此值的时候则会变成空格的形式 因此我们需要将不
  • javaWeb监听器

    JavaWeb监听器 三大组件 Servlet Listener Filter 监听器 接口 内容由我们来实现 它需要注册 例如注册在按钮上 监听器中的方法 会在特殊事件发生时调用 观察者 事件源 事件 监听器 javaweb中的监听器 事
  • 如何画时序图

    10年产品经理教你3步画好UML时序图 轻松掌握流程分析利器 建议收藏 知乎 转自知乎 上次介绍了活动图 这次分享 UML 中 另一种流程分析利器 时序图 以前每次要分析流程 我都会用活动图 直到有一次 我面对一个业务流程 画活动图 画来画
  • 用UDP实现client程序发送字符串到server程序,server程序将字符串打印出来。

    server c include
  • Java中Scanner.useDelimiter( )方法使用

    在Java语言中 格式化输入是通过类java util Scanner来完成的 默认情况下 Scanner是使用 空白 作为分隔符将输入分解为标记 然后使用它所提供的不同的next方法将得到的标记转换为不同的类型的值 Scanner sca
  • matlab 图像压缩 奇异值分解 SVD 代码仿真实现

    首先 在对图像进行奇异值分解之前 我们应当明白SVD的原理 在矩阵原理这门课里 我们曾经学过奇异值分解 其中讲到 奇异值分解可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示 这些小矩阵描述的是矩阵的重要的特性 在这里 我推荐对奇
  • 开源订单管理系统

    系统概述 随着企业信息化管理的不断深化 数字化技术对企业发展影响加深 为优化企业服务 最大程度提升客户体验及企业管理 开源字节与客户进行深入沟通需求 定制研发了开源订单管理系统 客户订单管理是现代企业商务业务的重要组成部分 可以帮助企业解决
  • HashMap源码-Put详解(HashMap是如何添加元素的)

    HashMap是Java中很重要一个部分 内容较多 因此笔者在此将其拆成一个个小块 作为自己学习知识整理的同时 也和广大网友一起讨论 也因此 在完成系列的学习之前 将以这种小节的形式进行学习分享 并在学习结束后进行整合 排序 一 HashM
  • Vagrant快速入门教程

    之前学习Docker的时候 发现了Vagrant 感觉这也是一个挺方便的技术 但是我下载安装完Vagrant的时候 发现恰好VirtualBox发了新版本 Vagrant还没兼容 所以这篇文章一直拖到了现在 昨天正好Vagrant更新了版本
  • function函数

    一 第一个function函数 1 在代码中书写的function函数默认情况下是不执行的 2 function函数只有在调用的时候才能被执行 函数是使用函数名来进行调用的 并且函数名的后面必须带有一对括号 3 可以多次调用函数 可以使用循
  • top命令详解

    一 参数 参数 意义 使用示例 hv 显示版本和帮助 top h top v top hv d 每隔多长时间刷新一次 单位是秒 默认5s top d 3 n 最多刷新几次退出 top n 5 u U 展示指定用户的信息 top u root
  • Windows10下实现输出到屏幕并且保存在文件中

    日期 2018 06 23 问题描述 有时 我们需要将执行后的输出不仅要显示在屏幕上 还想要将其保存一份文件 以便日后查看 这里 主要利用Windows10下PowerShell实现该功能 Windows PowerShell可以认为是命令
  • C语言《数据结构》——图的概念和创建,遍历

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 例如 随着计算机网络的发展 编程成了一种很常见且重要的职业 学好编程就要学好数据结构 下面将介绍数据结构中的图结构 一 什么是 图 二 图的基础知识和表示 1

随机推荐

  • 这三个 Go 水平自测题,你手写不出来还是先老实上班吧,过来看看

    现在技术文章特别卷 啥啥底层都能给你分析的头头是道 但是分析的对不对要看作者水平 很有可能一个错 抄他的那些人也跟着错 因为我以前看源码的时候就经常感觉自己在两种状态下切换 懂了 娘咧漏看了 这个函数干啥的 八股文这个事儿 其实也特别考验面
  • 如何去除WinRAR弹窗广告

    WinRAR 作为知名的老牌压缩软件 二十余年来始终风靡全球 经久不衰 但对于中国用户 其简体中文的个人免费版安装后会有 评估版本 的标记 而且每次启动时会有代理商的弹窗广告 本文教你如何去除标记和弹窗广告 让你的 WinRAR 恢复纯净体
  • 最优控制的理解

    最优控制 在满足一定约束的情况下 寻求最优控制策略 使得性能指标取极大值或极小值 对一个受控的动力学系统 从一类允许的控制方案中寻找一个最优的控制方案 使得系统的运动从由某个初始状态转移到目标状态的同时 其性能指标值为最优 性质 在一般的情
  • Cartoon头像 InsCode Stable Diffusion 美图活动一期

    一 简单介绍和活动地址 简单介绍 试用Stable Diffusion 模型生成优质人物好图 更简单地炼丹 InsCode是一个集成了在线IDE 在线AI编程 在线算力租赁 在线项目部署以及在线SD 模型使用的综合代码开发平台 不论你是初级
  • 基础算法题——找筷子(位的异或)

    找筷子 题目描述 经过一段时间的紧张筹备 电脑小组的 RP 餐厅 终于开业了 这天 经理 LXC 接到了一个定餐大单 可把大家乐坏了 员工们齐心协力按要求准备好了套餐正准备派送时 突然碰到一个棘手的问题 筷子 CX 小朋友找出了餐厅中所有的
  • VS+Qt应用开发,设置软件图标Icon

    VS Qt应用开发 设置软件图标Icon 前言 一 索然无味的默认icon图标 二 如何设置自己喜欢的icon图标 1 选择自己喜欢的图标 2 设置可执行文件 exe 图标 3 设置标题栏和任务栏图标 三 效果 四 工程源码 前言 VS版本
  • 深度学习系列笔记(一)——深度学习简介与反向传播机制

    深度学习简介 深度学习的发展趋势 Fully Connect Feedforward Network举例 反向传播 符号表示 计算Loss对Params的偏导数 符号说明 过程 例子 参考文献 深度学习的发展趋势 回顾一下deep lear
  • Tablayout+viewpager+Fragment的fragment页面数据不显示

    开发中经常使用Tablayout ViewPager与Frament 联动 之前fragment 页面创建比较少 没有出现什么问题 但是当创建frament页面页面比较多的时候 fragment 页面的数据会有不显示 想了各种办法没有解决
  • 海湾汉字编码表全部_汉字编码对照表

    这里写自定义目录标题 海湾汉字编码APP 蛮好用的 在某宝里搜 海湾汉字编码App 就能找到了 作者一直在更新
  • 使用arduino Nano 自制nRF24LE1 的烧录器进行固件烧录

    也有专门usb编程器 比较贵 可以买个arduino nano自已做一个 1 下载arduino的烧录固件 https github com garcezluz nRF24LE1 Programmer 2 使用arduino编译烧录固件 3
  • 计算机毕业设计如何制作电子商务网站怎么制作购物网站计算机课程设计电子商城做什么(PHP-ASP.NET-c#-JavaWeb-SSM-SSH-J2EE-springBoot

    如果计算机毕业设计选题是 lt lt 电子商务网站 gt gt lt lt 购物网站 gt gt 这样的题目 那么灵魂问答如下 需要实现什么功能呢 怎么样挑选适合自己的编程语言 使用什么前端框架 使用什么数据库 通过本文将给您找到以上答案
  • 【linux kernel】linux内核数据结构分析之哈希表

    Linux内核中实现了一套经典的哈希表操作 定义在 include linux list h文件中 本文基于linux内核源码6 2 7 记录了其常用操作哈希表的API函数 便于在阅读linux内核源码时更好的理解程序执行的过程和细节 在L
  • 外部中断实验

    外部中断简介 前一篇详细介绍了51 单片机的中断系统 这里再简单回顾一下 当中央处理机 CPU 正在处理某件事的时候外界发生了紧急事件请求 要求 CPU 暂停当前的工作 转而去处理这个紧急事件 处理完以后 再回到原来被中断的地方 继续原来的
  • Swift set/get方法

    Swift 中重写属性的set和get方法 Swift中如何重写属性的set和get方法 set和get方法的本质是什么 set和get方法紧跟着属性后面写 很紧凑 也清楚 class Person NSObject var name st
  • 并发编程系列——6线程池核心原理分析

    学习目标 线程池的作用 jdk给我们提供了哪几种常用线程池 线程池有哪几大核心参数 线程池的拒绝策略有哪些 线程中阻塞队列的作用 线程池的工作流程 线程池的设计思维 线程池中的阻塞队列如果用默认的 会有哪些问题 线程池的工作状态有哪些 线程
  • openERP为何改名odoo

    5月15日 OpenERP S A 在合作伙伴Webinar 宣布 OE即将改名Odoo 融资1000万美元 代码托管更换到Github 很多内容 OpenERP 名字更改 合作伙伴合作方式也有新政策 OpenERP开源 Odoo仍将继续开
  • go语言判断 slice,array,map中是否存在某个元素

    最近在用go重构以前python写的项目 遇到一些问题 总结一下 自己水平比较菜 遇到问题较低级 自己总结一下 免得忘了 很简单的需求 判断某个元素是否在 slice array map中 其实很简单 但是还是python最简单啊 func
  • 微信消息模板换行符转义问题处理

    通常的微信模板 Hello n n Are you OK 直接定义字符串 数据库中读取 这里需要说明的是 数据库读取 的内容 如果直接推送 n n是没有被转移为换行符的 此时需要 tplStr readDb tpl str replace
  • Hbase 常用 Shell 命令

    一 基本命令 打开 Hbase Shell hbase shell 1 1 获取帮助 获取帮助 help 获取命令的详细信息 help status 1 2 查看服务器状态 status 1 3 查看版本信息 version 二 关于表的操
  • OBB盒的实现

    制造几何仿真中的碰撞检测通常视为针对刚体对象间的碰撞检测 这样的话可以把非刚体即软体的建模和变形算法对碰撞检测的影响减少到最小 常见成熟的基于包围盒的碰撞检测 box intersection test 算法如 1 沿坐标轴的包围盒AABB