mqsdx  310.0.1
MQPluginSDK Extention Library / mqsdkをC++またはCLI(.Net)拡張するサポートライブラリ
 全て クラス 関数 変数 型定義 プロパティ グループ ページ
構造体 MQ0x::Polygon::FaceNormalBuffer

面法線をバッファリングします [詳細]

#include <MQ0x.hpp>

Public 型

typedef std::vector< MQPoint >
::size_type 
size_type
 

Public メソッド

void Clear (const bool isCompact=false)
 バッファをクリアします。 [詳細]
 
void Clear (const ::MQObject obj, const bool isCompact=false)
 新しいオブジェクトを指定してバッファをクリアします。 [詳細]
 
void Compact ()
 不要なヒープ領域を切り詰めます。オブジェクトが設定されていない時、ヒープサイズはゼロに切り詰められます。
 
 FaceNormalBuffer ()
 デフォルトコンストラクタ
 
 FaceNormalBuffer (const ::MQObject obj)
 コンストラクタ
 
const ::MQObject MQObject () const
 関連付けられているMQObjectを取得します。
 
const MQPoint & operator[] (size_type index)
 面法線を取得します。 [詳細]
 

Static Public メソッド

static bool IsInvalid (const MQPoint &src)
 無効な法線か判定します。
 

説明

面法線をバッファリングします

オブジェクト側のデータが更新されても FaceNormalBuffer の法線バッファは同期しません(形状を変更しない静的な処理の途中で、法線算出の重複や再計算を回避するために一時的に利用するのに向いています)。 基本的に一つのオブジェクトに対して一つの FaceNormalBuffer が必要ですが、よりシビアなパフォーマンスを要求する場合、 Clear() メソッドを介して新しいオブジェクトを設定し、確保済みのバッファ領域を解放せず値だけクリアして再利用し、ヒープの処理負荷を低減する事が可能です。

関数

void MQ0x::Polygon::FaceNormalBuffer::Clear ( const bool  isCompact = false)
inline

バッファをクリアします。

引数
[in]isCompactヒープを切り詰めるかどうか。

ヒープを切り詰める時、設定されたオブジェクトの面数を参照して切り詰めます。オブジェクトが設定されていない時、ヒープサイズはゼロに切り詰められます。

void MQ0x::Polygon::FaceNormalBuffer::Clear ( const ::MQObject  obj,
const bool  isCompact = false 
)
inline

新しいオブジェクトを指定してバッファをクリアします。

引数
[in]isCompactヒープを切り詰めるかどうか。

ヒープを切り詰める時、設定されたオブジェクトの面数を参照して切り詰めます。オブジェクトが設定されていない時、ヒープサイズはゼロに切り詰められます。

参照元 Clear().

const MQPoint& MQ0x::Polygon::FaceNormalBuffer::operator[] ( size_type  index)
inline

面法線を取得します。

インデックスが指定する面の法線は最初に参照された時に計算(初期化)されます。一度バッファされたデータは Clear() メソッドで再び未初期化状態に戻すまで保持されます。

戻り値
バッファされた面法線。法線は正規化済みです。なお、次のケースでは無効な法線が返ります。
  • オブジェクトが指定されていない時に、構築済みバッファの範囲外だったり、まだ初期化されていない要素を参照した時。
  • オブジェクトが指定されている時に、オブジェクトの面配列の範囲外を参照した時。
  • オブジェクトが指定されている時に、三角でも四角でもない面を参照した時。