CrossFramework Library

クラス XBase::AABBox2i

#include <XBase/AABBox2i.hpp>


整数型2次元AABB(Axis Aligned Bounding Box)。

float版のAABBとは領域の示し方が異なるので注意してください。
float版は min() と max() で表現していますが、 int版は begin()end() で表現しています。
また、float版とは異なり end() 上の点は範囲内とは判定しません。

このようなルールを設けるため、AABB内の各セルの処理について次のようなfor分を書くことを想定しています。
経験上、整数版のAABBはこのほうが使い勝手がよいと作者は考えています。

void func( const AABBox2i& aAABB )
{
    for ( int y = aAABB.begin().y; t < aAABB.end().y; ++y )
    {
        for ( int x = aAABB.begin().x; t < aAABB.end().x; ++x )
        {
        }
    }
}

すべてのメンバ一覧

定数
static const AABBox2i Largest ()
 全てを包むAABB。

コンストラクタ
 AABBox2i ()
 AABBox2i( Vector2i::Zero() ) で作成。
 AABBox2i (const Vector2iPOD &aBegin)
 AABBox2i( aPos , 0 , 0 ) で作成。
 AABBox2i (const Vector2iPOD &aBegin, uint aWidth, uint aHeight)
 基準となる点とサイズを指定してAABBを作成。
点の取得
const Vector2iPOD begin () const
 AABBの基準点を取得。
const Vector2iPOD end () const
 AABBの端点を取得。
const Vector2iPOD min () const
 begin() のエイリアス。
const Vector2iPOD term () const
 end() のエイリアス。
大きさの取得
uint width () const
 xの幅を取得。
uint height () const
 yの幅を取得。
正領域
bool isPositive () const
 begin() が (0,0) 以上か。
const AABBox2i toPositive () const
 begin() が (0,0) 未満なら (0,0) 以上になるようにしたAABBを取得する。
結合
const AABBox2i merge (const AABBox2i &aAABB) const
 自分自身と指定のAABBを含むAABBを取得。
void mergeAssign (const AABBox2i &aAABB)
 自分自身と指定のAABBを含むAABBに設定する。
判定
bool isIntersects (const AABBox2i &aAABB) const
 指定のAABBが重なっているか。
bool isContains (const Vector2iPOD &aPos) const
 指定の点を含んでいるか。
bool isContains (const AABBox2i &aAABB) const
 指定のAABBを含んでいるか。
四則演算
const AABBox2i add (const Vector2iPOD &aTrans) const
 min() term() に値を加算した結果を取得する。
const AABBox2i sub (const Vector2iPOD &aTrans) const
 min() term() から値を減算した結果を取得する。
void addAssign (const Vector2iPOD &aTrans)
 min() term() に値を加算する。
void subAssign (const Vector2iPOD &aTrans)
 min() term() から値を減算する。
演算子オーバーロード
const AABBox2i operator+ (const Vector2iPOD &) const
 add()
const AABBox2i operator- (const Vector2iPOD &) const
 sub()
AABBox2ioperator+= (const Vector2iPOD &)
 addAssign()
AABBox2ioperator-= (const Vector2iPOD &)
 subAssign()
変換
const AABBox2 toAABB2f () const
 AABBox2( min() , term() ) に変換。
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義