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
  • 相关阅读:
    DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践
    UVA10071 Back to High School Physics
    UVA10071 Back to High School Physics
    UVA10055 Hashmat the Brave Warrior
    UVA10055 Hashmat the Brave Warrior
    UVA458 The Decoder
    UVA458 The Decoder
    HDU2054 A == B ?
    HDU2054 A == B ?
    POJ3414 Pots
  • 原文地址:https://www.cnblogs.com/jiahuafu/p/1958471.html
Copyright © 2011-2022 走看看