mqsdx
310.0.1
MQPluginSDK Extention Library / mqsdkをC++またはCLI(.Net)拡張するサポートライブラリ
|
UVPointバッファ構造体。同じuvが重複しないようにuv座標をバッファリングします。 [詳細]
#include <MQ0x.hpp>
構成 | |
struct | Index |
UVPoint::Bufferを参照するためのインデックス型 [詳細] | |
Public 型 | |
typedef uint16_t | resolution_type |
resolutionの型 | |
Public メソッド | |
void | Clear (const bool isCompact=false) |
バッファをクリアする [詳細] | |
void | Compact () |
不要なヒープ領域を切り詰めます。 | |
const UVPoint * | GetAccessAt (const Index &index) const |
Index で指定されたバッファ要素(UVPoint)のアドレスを取得します [詳細] | |
const Index | GetIndexOf (const MQCoordinate &uv, const float epsilon) |
任意のuv値を記録するバッファ要素(UVPoint)を既存データから検索、または新規追加してインデックスを取得します。 [詳細] | |
UVPoint & | operator[] (const Index &index) |
要素へのアクセス。この処理は範囲チェックを行いません。 | |
Static Public 変数 | |
static const resolution_type | resolution = 10 |
resolution定数 | |
UVPointバッファ構造体。同じuvが重複しないようにuv座標をバッファリングします。
UVPoint::Bufferは単純な動的線形配列ではなく、uの値を0〜1の範囲に想定し、resolution定数を使ってハッシュキーにする分割配列です(※)。 uv値から一意にハッシュを出して配列を細分化することで既存uv値の総当り検査や、拡張時の再配置コストを高速化した構造になっています。 一方、要素にアクセスするには専用のオフセットデータ型Index構造体が必要です。
(※) u_key = u * resolution ただし、0 <= u_key <= (resolution-1)範囲外の場合は両端でClamp()処理。
|
inline |
バッファをクリアする
[in] | isCompact | ヒープ領域を切り詰めるかどうか |
|
inline |
任意のuv値を記録するバッファ要素(UVPoint)を既存データから検索、または新規追加してインデックスを取得します。
[in] | epsilon | 同じuvとして許容する軸あたりの誤差範囲。uもvも、どちらの軸でも差がepsilonより小さい場合、同じuv座標とみなす。 |