犀角(Diceros Horn) 2005 07

とくながの「書き散らかし」です

ここは研究・調査・開発などの記録がメインのページです。 日常の雑事、読書記録は はてなダイアリー の方に書いています。よろしければそちらもどうぞ。

Wed, 27 Jul 2005

剛体と慣性作用素

リー群上のハミルトン系を考える。 慣性作用素もしくは慣性テンソルとは、点 g における 接空間から余接空間への線型写像のことだと考える。 リー群が左から空間に作用しているとする。 剛体とは、空間上の質点の間の距離が変化しない系だと 考えるとすると、そこから計算される慣性作用素は、 剛体の回転直交座標系が変化する(つまり左からリー群の元が作用する) と、同じ座標変換を受けることになる。
別の言い方をすると、左移動を使って慣性作用素をリー環から リー環の双対空間への線型写像とみなした場合、左移動に使った リー群の元 g にはよらないと言うことになる。

剛体の慣性作用素は Body 座標では一定
別の言い方をすると、
剛体の慣性作用素は左移動で不変
と言ってもよい。逆に慣性作用素が右移動で不変と言うことは、 剛体が等方的、リー群が回転を表す群のときは球であると 言うことを意味している。

剛体の場合は、外力がない場合でもハミルトン方程式の 陽的な解がないため、普通の質点の運動のように Symplectic 法を 適用するのは難しい。普通の質点の場合は、運動エネルギーのみからなる ハミルトン系の解が等速直線運動という陽的な解があったからである。 さて、どうしよう?

  • ハミルトン系の陽的な解が存在するような慣性作用素の族を探して、その組合せで系を記述する
  • Symplectic 法ではなく、ルンゲクッタ法などで実装する

posted at 22:35 | category: /Math/symplectic | 固定リンク(剛体と慣性作用素)

Tue, 26 Jul 2005

Java3D で Shader

Java3D の新しいバージョン1.4ではいわゆる programmable shader が実装されたらしい。CgとGLSLに対応。試さないとなー。
Cg は jogl でも使えたけど、これで選択肢が増えたわけで、 要比較検討。

posted at 08:56 | category: /Java/Java3D | 固定リンク(Java3D で Shader)

Fri, 22 Jul 2005

Space 座標と Body 座標

リー群上のハミルトン系を考えるときに出てくるのが Space 座標と Body 座標の話。Abraham & Marsden の本に詳しく解説があるが、 他の一般の力学の本にはあまり触れられていないので、まとめておくことは 意味があるかも。今までの一般的な力学の公式との対比は 数値計算エンジンを作った後でも無駄ではないだろう、というわけで。
リー群Gの点gにおける接空間を単位元の接空間(すなわちリー環) と同一視するための方法として、

  • 左移動を使うのが Body 座標
  • 右移動を使うのが Space 座標
したがって、それぞれの座標は Adjoint 作用で移りあう。
リー群G(例えば回転)が左から空間V(例えば3次元空間)に 作用している場合を考える。リー群上の「運動」とは リー群上の実数でパラメーター付けされた曲線 g(t) のことだとすると、 Vの中の点pをとって、g(t)p はVの中の曲線を表す。 (例の場合、回転直交座標系の固定点が座標系が回転することで 直交座標系の中で回転する、ということ) その時刻 t における微分を考えると
d/dt (g(t)p) = X_S#(gp) = g X_B#(p)
が成り立つ。X_S は g(t) の時刻 t での微分の Space 座標での値。 X_B は同じく Body 座標での値。#は基本ベクトル場を表す。 これは角速度(基本ベクトル場)が与えられたときの大域座標での 速度を求める公式(角速度と位置との外積)に対応する。 Space 座標で表された基本ベクトル場に対して gp という大域座標の値 が使われ、Body 座標で表されたものに対して、p という局所座標の値が 使われる。

posted at 01:34 | category: /Math/symplectic | 固定リンク(Space 座標と Body 座標)

Wed, 20 Jul 2005

当面の目標

大分前に考えて途中になっていたテーマを久しぶりに取り組んでみよう。 いわゆる Symplectic 数値計算を適用できる範囲を広くできないかを考えてみたい。

  • 剛体の回転系の数値計算を局所座標を使わずにできないか
  • 数値計算に Symplectic 法を使えないか
  • 一般にリー群上の力学系に対し、リー群とリー環の演算だけで数値計算できないか
で、中期的な目標としては 「リー群の余接束上のハミルトン系の数値計算エンジンを作る!」 ことを考えてみたい。リー群として3次元の回転群や、アファイン変換群 をとれば、剛体の数値計算エンジンができるわけだ。

posted at 07:47 | category: /Math/symplectic | 固定リンク(当面の目標)

Mon, 11 Jul 2005

Delaunay三角形分割

Voronoi 図形の双対である Delaunay 三角形分割をするプログラムを作ってみた。 但し2次元。例によって Java Webstart で Delaunay2D という名前でおいてある。詳しい解説は次回。とりあえず起動して 右クリックで画面上に点を追加すると、Voroni 図形の逐次追加を 行い、その双対であるDelaunayが表示される。

posted at 01:46 | category: /Math | 固定リンク(Delaunay三角形分割)

PenAgain

エルゴノミクス系の文房具に弱いのであるが、どこかで見て前から気になっていた PenAgainがたまたまロフトに 売っていて、試し書きをするとなかなかよさげなので、買ってしまいました。
私は筆圧がかなり強くて、すぐ肩がこってしまうので力をいれずに書けるのは とてもありがたい。もちろん初めは違和感あるが、軽く書ける快適さにすぐ 慣れてしまう。文章より図を書くことが多いが、そのときはちょっと手元が 見にくいのが気になるかな。替え芯が使えるのもよい。

posted at 01:37 | category: /Diary | 固定リンク(PenAgain)

Wed, 06 Jul 2005

立体角

まだまだ高次元ボロノイ図形の書き方を考え中。 2次元のときに条件にあっているかを判定するのに 双対をとってデローニー三角形の角度で判定するのが 簡単だ(Springer から出ている Berg他著の Computational Geometry にも その旨の記述あり)。
ところが、高次元になるとそううまくは行かない(うまい判定法が あれば教えてほしい)。角度を使う場合、たとえば3次元の 立体角では内角の和が一定でなかったりして使いにくい。
余談だが、3次元空間の中の全周囲のことを「360度」と表現するのは 違和感がある。立体角なら720度だろ、とつっこみたくなる。 もちろん上半球面の全周囲なら360度でオッケーなのだが。
ボロノイの高次元一般化の話はもうちょっと続く予定。

posted at 02:25 | category: /Math | 固定リンク(立体角)

Mon, 04 Jul 2005

引き続きボロノイ

高次元にも通用するボロノイ図形の書き方を考えて中。 双対をとったデローニー図形を考える方がよいかも知れない。 一般化すると、点、辺、三角形・・・というn単体の系列 X_{0} = 点の集合、 X_{1} = 辺の集合、 X_{2} = 三角形の集合、・・・・ X_{n} = n単体の集合、として

  • 無駄がない。つまり最高次元をのぞくどの次元の単体もひとつ上の次元の 単体の境界として現れること
  • 単体の境界はひとつ次元の低い単体として現れる
と言う条件を課した X_{0},X_{1},...,X_{n} を考えて、これらの要素を 操作するための Collection 系のデータ構造を設計すべきであろうと思う。 実装はまた今度。

posted at 21:15 | category: /Math | 固定リンク(引き続きボロノイ)

ボロノイ図形

いわゆる計算幾何の分野で三角形分割や最近傍点探索アルゴリズムで 必ず現れるのがボロノイ図形。定義や手で図を書くのはすごくわかり易いんだが、 アルゴリズムを実装しようとすると実は結構面倒だったりする。 もちろん2次元バージョンなら簡単。3次元でも力業で何とかがんばることは 出来そう。次元nが増えても実装が変わらないような手順やnに対する速度的な評価が よいものを探している。 とりあえず東大の杉浦先生の幾何計算ソフトウエアを見れば動くソースがある。 のでそこからはじめようかな。

RGBを3次元情報と見てボロノイ図形を使って減色アルゴリズムを考えることが出来る、っていうのはいろいろなところでやられているみたいなのですが、それをより高次元の データの圧縮問題に適用できないかなあ、と思っているのです。

posted at 21:14 | category: /Math | 固定リンク(ボロノイ図形)