|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
float単位のダイレクトメモリバッファのインタフェースです。
実際のバッファはDirectBufferFactory
にて取得してください。
メソッドの概要 | |
float[] |
get(int index,
float[] buff)
ダイレクトバッファからデータを読み込みます。 |
float[] |
get(int index,
float[] buff,
int offset,
int length)
ダイレクトバッファからデータを読み込みます。 |
FloatBuffer |
madd(FloatBuffer src1,
FloatBuffer src2,
float multiplier)
FloatBuffer 同士の演算を行ないます。
|
void |
put(int index,
float[] buff)
ダイレクトバッファへデータを書き込みます。 |
void |
put(int index,
float[] buff,
int offset,
int length)
ダイレクトバッファへデータを書き込みます。 |
FloatBuffer |
transform(FloatBuffer src,
Matrix4f matrix,
int itemSize,
int itemCount)
FloatBuffer とMatrix4f の演算を行ないます。
|
インタフェース com.nttdocomo.ui.ogl.DirectBuffer から継承したメソッド |
clearSegment, length, setSegment |
メソッドの詳細 |
public float[] get(int index, float[] buff)
ダイレクトバッファからデータを読み込みます。
get(index, buff, 0, buff.length)
と同じ動作となります。
index
- 読み込む先頭位置buff
- 格納するデータ配列
NullPointerException
- buffがnullの場合に発生します。
IllegalArgumentException
- indexが負の値またはlength()
以上,
index + buff.length > length()
の場合に発生します。public float[] get(int index, float[] buff, int offset, int length)
ダイレクトバッファからデータを読み込みます。
ダイレクトバッファのindexの位置からlength分データを読み出し、buffのoffsetから格納します。
index
- 読み込む先頭位置buff
- 格納するデータ配列offset
- データを格納する先頭位置length
- データを格納する要素数
NullPointerException
- buffがnullの場合に発生します。
IllegalArgumentException
- index,offset,lengthが負の値,
offset + length > buff.length,
index + length > length()
の場合に発生します。public void put(int index, float[] buff)
ダイレクトバッファへデータを書き込みます。
put(index, buff, 0, buff.length)
と同じ動作となります。
index
- 書き込む先頭位置buff
- 書き込むデータ配列
NullPointerException
- buffがnullの場合に発生します。
IllegalArgumentException
- indexが負の値またはlength()
以上,
index + buff.length > length()
の場合に発生します。public void put(int index, float[] buff, int offset, int length)
ダイレクトバッファへデータを書き込みます。
buffのoffsetの位置からlength分を、ダイレクトバッファのindexの位置へ書き込みます。
index
- 書き込みを行う先頭位置buff
- 書き込むデータ配列offset
- 書き込むデータの先頭位置length
- 書き込むデータの要素数
NullPointerException
- buffがnullの場合に発生します。
IllegalArgumentException
- index,offset,lengthが負の値,
offset + length > buff.length,
index + length > length()
の場合に発生します。public FloatBuffer madd(FloatBuffer src1, FloatBuffer src2, float multiplier)
FloatBuffer
同士の演算を行ないます。
以下の計算を行ないます。 計算結果はこのインスタンスに保存されます。
int length = このインスタンスのセグメント長(src1,src2のセグメント長) int indexthis = このインスタンスのセグメントの開始インデックス int index1 = src1のセグメントの開始インデックス int index2 = src2のセグメントの開始インデックス
while (length-- != 0) { this[indexthis++] = src1[index1++] + (multiplier*src2[index2++]); }
while (length-- != 0) { this[indexthis++] = multiplier*src2[index2++]; }
while (length-- != 0) { this[indexthis++] = src1[index1++]; }
このインスタンスのセグメント長、src1のセグメント長およびsrc2のセグメント長が 全て一致している必要があります。一致していない場合は例外が発生します。
以下に本メソッドの使用例を示します。
FloatBuffer modelA = ...; // モデルA FloatBuffer modelB = ...; // モデルB FloatBuffer targetModel = ...; // Morphing結果格納先 FloatBuffer deltaModel = ...; // モデルAとモデルBの差分 // モデルAとモデルBの差分を求める deltaModel.madd(modelB, modelA, -1); // モデルAを基本として10%ずつモデルBに遷移させる for(int i = 1; i <= 10; i++) { targetModel.madd(modelA, deltaModel, (i*0.1f)); }
FloatBuffer buf1 = ...; // バッファ1 FloatBuffer buf2 = ...; // バッファ2 // バッファ1の内容をバッファ2にコピーする buf2.madd(buf1, null, 0);
src1
- 演算対象となるバッファ1を指定します。src2
- 演算対象となるバッファ2を指定します。multiplier
- バッファ2の各要素に対して乗算を行なう値を指定します。
NullPointerException
- src1, src2の両方がnullである場合に発生します。
IllegalArgumentException
- 引数src1,src2のいずれかにシステムが提供しているFloatBuffer
オブジェクト
以外のオブジェクトが指定された場合に発生します。
IllegalArgumentException
- このインスタンスのセグメント長、src1のセグメント長およびsrc2のセグメント長が
一致していない場合に発生します。
public FloatBuffer transform(FloatBuffer src, Matrix4f matrix, int itemSize, int itemCount)
FloatBuffer
とMatrix4f
の演算を行ないます。
以下の計算を行ないます。 計算結果はこのインスタンスに保存されます。
int indexthis = このインスタンスのセグメントの開始インデックス int indexsrc = 引数srcのセグメントの開始インデックス
while(itemCount-- > 0) { int xidx = indexsrc++; int yidx = indexsrc++; this[indexthis++] = m0*src[xidx] + m4*src[yidx] + m12; this[indexthis++] = m1*src[xidx] + m5*src[yidx] + m13; }
while(itemCount-- > 0) { int xidx = indexsrc++; int yidx = indexsrc++; int zidx = indexsrc++; this[indexthis++] = m0*src[xidx] + m4*src[yidx] + m8*src[zidx] + m12; this[indexthis++] = m1*src[xidx] + m5*src[yidx] + m9*src[zidx] + m13; this[indexthis++] = m2*src[xidx] + m6*src[yidx] + m10*src[zidx] + m14; }
while(itemCount-- > 0) { int xidx = indexsrc++; int yidx = indexsrc++; int zidx = indexsrc++; int widx = indexsrc++; this[indexthis++] = m0*src[xidx] + m4*src[yidx] + m8*src[zidx] + m12*src[widx]; this[indexthis++] = m1*src[xidx] + m5*src[yidx] + m9*src[zidx] + m13*src[widx]; this[indexthis++] = m2*src[xidx] + m6*src[yidx] + m10*src[zidx] + m14*src[widx]; this[indexthis++] = m3*src[xidx] + m7*src[yidx] + m11*src[zidx] + m15*src[widx]; }
src
- 演算対象となるバッファを指定します。matrix
- 演算対象となるMatrix4fを指定します。itemSize
- バッファのアイテムサイズを指定します。
2,3,4のいずれかが指定可能です。itemCount
- バッファのアイテムの個数を指定します。
NullPointerException
- 引数srcまたはmatrixがnullである場合に発生します。
IllegalArgumentException
- 引数srcにシステムが提供しているFloatBuffer
オブジェクト以外のオブジェクトが指定された場合に発生します。
IllegalArgumentException
- 引数itemSizeが2,3,4のいずれでもない場合、
またはitemCountが負の値である場合に発生します。
ArrayIndexOutOfBoundsException
- このインスタンスのセグメント長をlengththis、
引数srcのセグメント長をlengthsrcとしたとき、
itemSize*itemCount > lengththisまたはitemSize*itemCount > lengthsrc
となる場合に発生します。
NullPointerException
- 引数matrixの行列要素Matrix4f.m
にnullが設定されている場合に発生します。
ArrayIndexOutOfBoundsException
- 引数matrixの行列要素Matrix4f.m
に配列長が4x4=16未満の配列が設定されている場合に発生します。
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
NTT DOCOMO,INC.
本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。
Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。
FeliCaは、ソニー株式会社が開発した非接触ICカードの技術方式です。FeliCaは、ソニー株式会社の登録商標です。
「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。
その他記載された会社名、製品名などは該当する各社の商標または登録商標です。