ソフトウェア開発したい日記

「面白い!」と思った頭の体操や、数学の問題を載せていきます
その他ロードバイクででかけた先の写真や、ソフト開発のメモ等

コンボボックスのインデックスをマウススクロールで変更可能にしたい

2011年02月28日 19時54分54秒 | ソフト開発日記
Swingの古参,JComboBoxのインデックスをマウスでぐりぐりして変更できるようにしたかったのでメモ.

cmbBoxTestという名前のコンボボックスに対して,
MouseWheelEventを実装し,MouseWheelMovedをオーバーライド(正しい言葉遣いか不明).


private void cmbToothMouseWheelMoved(java.awt.event.MouseWheelEvent evt) {
 //回転方向の取得
 int wheel = evt.getWheelRotation();
 //アイテム数の取得
 int count = cmbBoxTest.getItemCount();
 //選択項目位置の取得
 int index = cmbBoxTest.getSelectedIndex();

 //アイテムが2つ以上あるとき
 if(count >= 2){

  //上方向スクロール
  if(wheel == -1){if(index > 0){ cmbBoxTest.setSelectedIndex(index-1); }}

  //下方向スクロール
  if(wheel == 1){if(index + 1 < count){ cmbBoxTest.setSelectedIndex(index+1); }}
}

あっさりできました.

BufferedImageに画像を描画してRGB情報を取得する流れのメモ

2011年02月27日 19時47分11秒 | ソフト開発日記
結構この工程がよく使うのに,
毎度毎度混乱してしまうので,一連の流れのメモ書き.

Image img;
BufferedImage buffer;

if (img != null) {
if (buffer == null) {
buffer = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_RGB);
}
Graphics2D buf = buffer.createGraphics();
buf.drawImage(img, 0, 0, this);
g.drawImage(buffer, 0, 0, this);
}

後は
buffer.getRGB(i, j);
でRGB情報を取得.

虫めがねコンポーネント

2011年02月26日 22時27分09秒 | ソフト開発日記
「JAVA SWING HACK」という本のp307~を参考に虫めがねコンポーネントを作成.

書いてあるとおりにやれば,虫めがねコンポーネントができましたが
一部変更したほうがよさそうなとこがあったのでメモ書き.

例8-1のcomputeGrabRect()メソッドのリターン文を

return new Rectangle(point.x, point.y, grabWidth, grabHeight);

return new Rectangle(point.x-mySize.width/(int)Math.round(zoom*2.0), point.y-mySize.height/(int)Math.round(zoom*2.0), grabWidth, grabHeight);

と変えると,マウス位置から右下へ引き伸ばされるように拡大されたのが,
マウス位置を中心に拡大されるようになります.
こっちのほうがきっと直感的.

点と直線の距離

2011年02月25日 00時55分12秒 | ソフト開発日記
マウスドラッグで自由にベクトルを描き,モーメントの和を求めるプログラムを書いているとき,
ベクトルと回転軸との距離を求めるのに手間取ってしまったのでメモ.

回転軸を(x0, y0)
ベクトルの始点座標を(x1, y1)
ベクトルの終点座標を(x2, y2)

とすると,傾きは
a = (y2 - y1) / (x2 - x1)

切片は
b = y2 - (a * x2)

距離は
d = |y0 - a * x0 - b| / √(1 + a^2)

また,(x2-x1)の値が0(あるいは0.00001未満くらい)のときの距離は
d = (x2 - x0) (0割り防御)

よくよく見るとすごく簡単なことなのに,何故か手間取りました.
そして現在はモーメントの正負の決定法でまた手間取っています.

FEM・・・

2011年02月24日 18時13分01秒 | ソフト開発日記
一段落ついたので,やろうと思っていたFEM解析を独学で勉強開始.

図書館で3冊くらい借りてきて,比較しながら読み進めるも
難解な部分が多くくじけそう.
というか不親切に感じる部分がとても多い.
自分の読解力が無いだけなのでしょうか.

なんやかんやで数時間後,アイソパラメトリック四辺形一次元要素の
要素剛性マトリクスを求めて,点に加わる力と変位の関係を求める
プログラムまでは完成.

本に出てくる複雑な数式からはものすごく難解なイメージを受けましたが,
実際にコーディングするとそこまで難しいことはやってなかったぽいです.
しかし先は長そう.