zoukankan      html  css  js  c++  java
  • 几何检测 (四)

    两个AABB的相交性检测

          检测两个静止AABB的相交性是很简单的,只需要在每一维上单独检查它们的重合程度即可。如果在所有维上都没有重合,那么这两个AABB就不会相交。intersectAABBs()就是用这项技术来实现的。

    01 //---------------------------------------------------------------------------
    02 // Check if two AABBs intersect, and return true if so.  Optionally return
    03 // the AABB of their intersection if an intersection is detected.
    04 //---------------------------------------------------------------------------
    05 bool intersectAABBs(const AABB3& box1, const AABB3& box2, AABB3* boxIntersect)
    06 {
    07     // Check for no overlap
    08     if (box1.min.x > box2.max.x) return false;
    09     if (box1.max.x < box2.min.x) return false;
    10     if (box1.min.y > box2.max.y) return false;
    11     if (box1.max.y < box2.min.y) return false;
    12     if (box1.min.z > box2.max.z) return false;
    13     if (box1.max.z < box2.min.z) return false;
    14   
    15     // We have overlap.  Compute AABB of intersection, if they want it.
    16     if (boxIntersect != NULL)
    17     {
    18         boxIntersect->min.x = max(box1.min.x, box2.min.x);
    19         boxIntersect->max.x = min(box1.max.x, box2.max.x);
    20         boxIntersect->min.y = max(box1.min.y, box2.min.y);
    21         boxIntersect->max.y = min(box1.max.y, box2.max.y);
    22         boxIntersect->min.z = max(box1.min.z, box2.min.z);
    23         boxIntersect->max.z = min(box1.max.z, box2.max.z);
    24     }
    25   
    26     return true;
    27
  • 相关阅读:
    由于版本依赖造成的YUM段错误
    CodeDom系列事件(event)定义和反射调用
    CodeSmith模板引擎系列二文件目录树
    F#初试打印目录文件树
    在IIS上SSL的部署和启动SSL安全
    CodeDom系列二程序基本结构符号三角形问题
    CodeDom系列目录
    CodeDom系列四Code生成
    CodeDom六实体类生成示例
    CodeDom系列五动态编译
  • 原文地址:https://www.cnblogs.com/jiahuafu/p/1958471.html
Copyright © 2011-2022 走看看