nlib
nn::nlib::simd::AxisAlignedBox クラス

3次元空間におけるAABB(軸並行境界ボックス)を表すクラスです。最小座標(point_min)と最大座標(point_max)をデータメンバに持ちます。 [詳解]

#include "nn/nlib/simd/SimdGeometry.h"

公開メンバ関数

 AxisAlignedBox () noexcept
 デフォルトコンストラクタです。データメンバの初期設定は行いません。
 
 AxisAlignedBox (const Float3 &pmin, const Float3 &pmax)
 最小座標と最大座標を指定してAABBを構築します。 [詳解]
 
void GetCorners (Float3 *corners) const noexcept
 AABBの頂点座標を書き出します。 [詳解]
 
void Transform (AxisAlignedBox *box, SimdMatrixArg m) noexcept
 AABBを4x4行列m で変換し、変換後の図形を包む最小のAABBをbox に格納します。 [詳解]
 

静的公開メンバ関数

static void Merge (AxisAlignedBox *box, const AxisAlignedBox &box0, const AxisAlignedBox &box1) noexcept
 2つのAABBを包む最小のAABBを作成します。 [詳解]
 
static void FromSphere (AxisAlignedBox *box, SimdSphereArg sphere) noexcept
 球を包む最小のAABBを作成します。 [詳解]
 
static void FromPoints (AxisAlignedBox *box, SimdVectorArg point0, SimdVectorArg point1) noexcept
 2つの点を包む最小のAABBを作成します。 [詳解]
 
static void FromPoints (AxisAlignedBox *box, const Float3 *points, size_t count) noexcept
 count 個の点を包む最小のAABBを作成します。 [詳解]
 

公開変数類

SimdVector point_min
 AABBの最小座標です。レーン3は無視されます。
 
SimdVector point_max
 AABBの最大座標です。レーン3は無視されます。
 

詳解

3次元空間におけるAABB(軸並行境界ボックス)を表すクラスです。最小座標(point_min)と最大座標(point_max)をデータメンバに持ちます。

SimdGeometry.h74 行目に定義があります。

構築子と解体子

◆ AxisAlignedBox()

nn::nlib::simd::AxisAlignedBox::AxisAlignedBox ( const Float3 pmin,
const Float3 pmax 
)

最小座標と最大座標を指定してAABBを構築します。

引数
[in]pmin最小xyz座標
[in]pmax最大xyz座標

関数詳解

◆ FromPoints() [1/2]

nn::nlib::simd::AxisAlignedBox::FromPoints ( AxisAlignedBox box,
SimdVectorArg  point0,
SimdVectorArg  point1 
)
staticnoexcept

2つの点を包む最小のAABBを作成します。

引数
[out]box作成されたAABBが格納される領域
[in]point03次元空間上の点
[in]point13次元空間上の点

◆ FromPoints() [2/2]

nn::nlib::simd::AxisAlignedBox::FromPoints ( AxisAlignedBox box,
const Float3 points,
size_t  count 
)
staticnoexcept

count 個の点を包む最小のAABBを作成します。

引数
[out]box作成されたAABBが格納される領域
[in]points3次元空間上の点が格納されている領域
[in]count点の数

◆ FromSphere()

nn::nlib::simd::AxisAlignedBox::FromSphere ( AxisAlignedBox box,
SimdSphereArg  sphere 
)
staticnoexcept

球を包む最小のAABBを作成します。

引数
[out]box作成されたAABBが格納される領域
[in]sphere3次元空間上の球

◆ GetCorners()

nn::nlib::simd::AxisAlignedBox::GetCorners ( Float3 corners) const
noexcept

AABBの頂点座標を書き出します。

引数
[out]corners頂点座標が書き出される領域へのポインタ
説明
corners は8つの頂点座標が書き出されるので、そのための領域が書き込み可能になっている必要があります。

◆ Merge()

nn::nlib::simd::AxisAlignedBox::Merge ( AxisAlignedBox box,
const AxisAlignedBox box0,
const AxisAlignedBox box1 
)
staticnoexcept

2つのAABBを包む最小のAABBを作成します。

引数
[out]boxbox0box1 を包むAABBが格納される領域
[in]box0AABB
[in]box1AABB

◆ Transform()

nn::nlib::simd::AxisAlignedBox::Transform ( AxisAlignedBox box,
SimdMatrixArg  m 
)
noexcept

AABBを4x4行列m で変換し、変換後の図形を包む最小のAABBをbox に格納します。

引数
[out]box変換後のAABBが格納される領域
[in]m3D変換行列

このクラス詳解は次のファイルから抽出されました: