« I.S Carey Mulligan | トップページ | I.S Damu & Redef Records visit the HPRS, a Private Record Sale in NJ »

2010.09.29

Matrixの総当たりループ

随分前に書いたプログラムなため忘れそうなのでメモ。
始めから話の道を逸れることになりますが、数ヶ月前まで引力や、遠心力などの実装に興味があり、そのようなプログラムを組めたらさぞ嬉しいだろうと考えていました。
しかし、実際にプログラムとして形にするとその時は嬉しいのですが、すぐに、もっとこうしたい!という具合に欲が出てきます。
そうして、今では被写界深度のプログラムについて日々調査しているわけで…。


本題に入ります。
今回のメモは前記の引力プログラムの時に時間を食ったMatrixの総当たりループについてです。これは、MXJ、つまり、Javaで実装しています。ですので、普通のforループコードです。
苦戦したのはMatrixをどうforループで呼び出し、演算するかです。それによって、forループの形も変わってくるので。

以下がコード抜粋


  1. for(int i = 0; i < dimOll - 1; i++){
  2.             for(int j = i + 1; j < dimOll; j++){
  3.  
  4.                 final int AY = i / dim[0];
  5.                 final int AX = i - dim[0] * AY;
  6.                 final int BY = j / dim[0];
  7.                 final int BX = j - dim[0] * BY;
  8.  
  9.                 final float[] APOS = jmPosition.getcell2dFloat(AX, AY);
  10.                 final float[] BPOS = jmPosition.getcell2dFloat(BX, BY);
  11.  
  12.                 //A
  13.                 matrixArray[i * 3] += (APOS[0] - BPOS[0]) * rituCFA * CFSize;
  14.                 matrixArray[i * 3 + 1] += (APOS[1] - BPOS[1]) * rituCFA * CFSize;
  15.                 matrixArray[i * 3 + 2] += (APOS[2] - BPOS[2]) * rituCFA * CFSize;
  16.                 //B
  17.                 matrixArray[j * 3] += (BPOS[0] - APOS[0]) * rituCFB * CFSize;
  18.                 matrixArray[j * 3 + 1] += (BPOS[1] - APOS[1]) * rituCFB * CFSize;
  19.                 matrixArray[j * 3 + 2] += (BPOS[2] - APOS[2]) * rituCFB * CFSize;
  20.  
  21.             }
  22.         }
  23.  



総当たりのforループは折り返しのない一列配列用(ベクターというんですかね?)にして簡略に作りました。一列配列にすることで、Matrixからの呼び出しに面倒な計算が増えています。今では、このようにMatrixから一つづつセルを取り出すことはしません。この方法はとても時間が掛かる方法です。詳しくは、Jitterチュートリアル(Jitter における Java)を参照するとよい。



わかりやすいJava入門編 わかりやすいJava入門編

価格 : ¥ 2,940 (税込み)

自分のペースで本を読み、通過テストで自分の学習度を確認。着実にステップアップさせてゆける。プログラミングの基本の基本から解説しているので、はじめてのプログラミング学習に最適な一冊。

|

« I.S Carey Mulligan | トップページ | I.S Damu & Redef Records visit the HPRS, a Private Record Sale in NJ »

java」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/198455/49597163

この記事へのトラックバック一覧です: Matrixの総当たりループ:

« I.S Carey Mulligan | トップページ | I.S Damu & Redef Records visit the HPRS, a Private Record Sale in NJ »