nlib
nn::nlib::simd::OrientedBox クラス

OBB(有向境界ボックス)を表すクラスです。中心座標(center)とxyz軸方向の大きさ(extent)及び回転クォータニオン(rotation)をデータメンバに持ちます。 [詳解]

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

公開メンバ関数

 OrientedBox () noexcept
 デフォルトコンストラクタです。データメンバの初期設定は行いません。
 
void Transform (OrientedBox *box, SimdMatrixArg m) noexcept
 OBBを3D変換したOBBを格納します。 [詳解]
 
void GetCorners (Float3 *corners) const noexcept
 OBBの頂点座標を取得します。 [詳解]
 

静的公開メンバ関数

static void FromAxisAlignedBox (OrientedBox *box, const AxisAlignedBox &aabb) noexcept
 AABBをOBBに変換します。 [詳解]
 

公開変数類

SimdVector center
 OBBの中心座標です。3次元ベクトルです。
 
SimdVector extent
 OBBのxyz各座標の大きさです。各要素は全て正の値である必要があります。3次元ベクトルです。
 
SimdQuaternion rotation
 OBBの方向(orientation)を表すクォータニオンです。
 

詳解

OBB(有向境界ボックス)を表すクラスです。中心座標(center)とxyz軸方向の大きさ(extent)及び回転クォータニオン(rotation)をデータメンバに持ちます。

説明
(-extent.x, -extent.y, -extent.z), (extent.x, extent.y, extent.z)で定義されるAABBをrotationで回転させて、centerだけ平行移動させたオブジェクトになります。
つまり回転がない場合、中心座標が原点でxyz軸方向の大きさがそれぞれ1の場合、 (-1,-1,-1)(1, 1, 1)をそれぞれ最小座標と最大座標として持つAABBと同じになります。
rotationは正規化されたクォータニオンである必要があることに注意してください。

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

関数詳解

nn::nlib::simd::OrientedBox::FromAxisAlignedBox ( OrientedBox box,
const AxisAlignedBox aabb 
)
staticnoexcept

AABBをOBBに変換します。

引数
[out]boxOBBが格納される領域
[in]aabbAABBが格納される領域
nn::nlib::simd::OrientedBox::GetCorners ( Float3 corners) const
noexcept

OBBの頂点座標を取得します。

引数
[out]corners頂点座標が格納される領域
説明
corners は8つの頂点座標が書き出されるので、そのための領域が書き込み可能になっている必要があります。
nn::nlib::simd::OrientedBox::Transform ( OrientedBox box,
SimdMatrixArg  m 
)
noexcept

OBBを3D変換したOBBを格納します。

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

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