20080511~
13と7と11の倍数の論理積は13と7と11の積の倍数である。
和ァ・・・
計算をひと通り終える体力もないんです最近。つらいです。
以前、五目ゲルマン行列可視化器って日記を上げた際 行列指数関数における 「exp(A+B)とexp(A)exp(B)が実はイコールとは限らない」ってのに気づかなかったんです。 パウリ行列やゲルマン行列などの単位的な実対称正方行列σとかいう生成子があったとして U1=exp(∑(iσnθn))とU2=Π(exp(iσnθn))も一般には異なる ってことをすっかり認識してなかったんですよ・・・ 今になってようやく この生成子から生成されたユニタリ行列Uの固有値問題 abs(det(U1-λ1))=0 と abs(det(U2-λ2))=0 でそれぞれ、λ1=λ2(単位円周上の複素数)なんじゃないかという仮説を 計算に起こそうとしてるんですが やってる途中で胃もたれがしてきまして・・・orz あああああ・・・昔ならひと通り終えてもまだ体力あったはずなのになぁ・・・ 行列式の絶対値・・・固有値なら、ユニタリのそのまた固有値ならきっとなんとかなってくれるんじゃないかというよくわからない期待ェ 机で計算しないのも悪いんですがー にほんブログ村 PR
友達と買い物に行って買い物カゴをウィンドウショッピングした結果(プライスレス)wwwww
まず、x,y,zと、itiという項目ラベルを設けます。 itiという項目には必ず「1」という数値のみが入ります。 長さが「-2」から「2」までの縦線を描きます。 この縦線を、横間隔「1」で「-2」から「2」まで5本コピーします。 このとき、線と線の間に1行以上空白を空けましょう。 次に、縦(y)と横(x)を入れ替えてコピーし、縦線を横線化して5本描きます。 このときも1行以上空けるのですが、縦と横が入れ替わった目印として、2行空白を空けたり、左の列にメモや注釈(宣言)を添えるとよいでしょう。 最後に、これらの縦横5本ずつの格子を、奥行方向にさらに5本コピーします。 奥行き(z)の数値は「0」から「5」まで、「1」間隔とします。 このときも左の列に宣言文を設けたり、目印として3行空けるとよいでしょう。 これで、3D格子データが揃いました。 ======= 移動と伸縮の行列を用意します。 この行列を、4列1セットの行ベクトルの右に掛け算して、結果をさらにその右に4列1セットの行ベクトルとして出力することで、移動と伸縮を可能にします。 この行列のB、C、D(色つき)がそれぞれx、y、z方向の伸縮度合い、x0、y0、z0(色)がそれぞれx、y、zの移動度合いを表します。 つまりこういうことです。 行列を掛け算する前のx,y,zをそれぞれ、x1,y1,z1、掛け算したあとのx,y,zをそれぞれx2,y2,z2とすると x2=Bx1+x0 y2=Cy1+y0 z2=Dz1+z0 となるわけです。 また itiの項目はどうあがいても「1」にしかならないことがわかるかと思います。 ======= この移動と伸縮を行った結果のベクトルを遠近法によって3Dに可視化します。 比例係数をAとして 横=Ax/z 縦=Ay/z です。これを2Dグラフに折れ線描画(点なし)すると、なんとなく3D描画のように見えるはずです。 ======= ただし、このままでは負の奥行き(カメラのこっち側)に対応できていないため、例外処理をほどこします。 参照するzがゼロ未満だったら縦=横=0 とする例外処理です。 if(z>0,Ax/z,0) if(z>0,Ay/z,0) こうなります。点描画ではなく線描画なので、ど真ん中に隠します。 また、今回は特例というか一時的な措置として、奥行きに伸びる線がないからできることです。 ======== z0の値を変化させると、カメラが奥行方向に移動するのがわかるかと思います。 ======== delボタンでもおして再計算するたびに自動で動かせるようにもしておきましょう。いつもの now()-today()に速さ100万くらいを掛け算することで 割りとぬるぬる動かすことが出来ます。 また、Fで割ったあまりmod(1000000*(now()-today()),F)をz0で参照しますと、F周期の動きになります。 ======= 一方、比例係数Aを変化させるのはただのズームに相当するわけですが カメラの位置の変更とただのズームとでは微妙に映る景色が異なるのがおかわりいただけたでしょうか。(間違い探し感) たとえるなら ビルの向こうに月が写っていて、ビルの向こう側から撮影するか、ビルの手前から望遠で撮影するかの違いのようなものです。 大きく月を写真に撮るテク、超望遠なんかは、普通の人より思いっきり後ずさってその分めっちゃ望遠して撮影してるんだと思うわけですが(そのため広大な風景がになりがちですよね) ところで 被写体の大きさを固定したまま 望遠と移動を連動させるあの描写方法っていうんですか、演出? こういうのなんて名前なんでしょうか。 どうも僕は実写「いいひと。」で初めて認識したように思うのです ズームの比例係数Aを、A=(z0+6)/3としてます。 z0=if(-mod()<奥行き限界、奥行き限界、-mod) 奥行き限界=5(最後のコマで静止させるため) -mod=-mod(なう×速さ、周期) なう=now()-today() まあ、よかったら元データのExcelファイルのおもちゃでもDLして、遊んでやってください にほんブログ村
おくゆかしすぎんだろこのアニメ
ExcelファイルDLはこちら なんですが、このファイル自体がウザいのでご注意ください。 オレンジで色つけたセル以外まともに動かせるところがなく、非常にウザいと思います。 容量削りながら遠近法の例外処理をしようとした結果です。 なんかこういい例外処理方法ないかなぁ~ というかx,y,z方向のデータが無駄にかさんでしまいました。間引きしたい ワイヤーフレームをドットでやろうとすると8000行1MBとかいうふざけた事態になりますし ただ、気づいたのは グラフ描写する際にエラーだと縦=横=ゼロにはなる(=""でも空白になってくれない)んですが これがひとかたまりで点描写ナシで線描写だけだと描かれないことですね これは活かせるかも。 にほんブログ村
久々に解説ブログです。こんにちは。
Excelの2Dグラフで3Dモデリングのワイヤーフレームみたいのをやってるんですが ようやく遠近法がまともになりました。 ExcelファイルDLはこちら。 今までのおさらいも兼ねて、解説していきます。 まず、今回はわかりやすいように、図のように直方体のモデルを使用します。 このように、手前(マイナスz)・奥(プラスz)と下(マイナスy)・上(プラスy)の4面のデータを用意します。 ほんとうは6面なのですが、直方体なので、左右(±x)の2面は省略します。 また、余計な1次元を追加した4次元ワンセットのベクトルとします。 4次元目はitiという仮の項目をつけておきました。 基本的に値が1しか取らないからです。 なぜこのようなあんまり意味のない次元を設けるのかといいますと 平行移動も行列演算で一括して行えるようにするためです。 ======= 伸縮・移動1 次に、縮尺・平行移動1のセルの解説に移ります。 左側に用意した4列に、4行4列の行列を掛け算することで、縮尺と平行移動を行います。 青・緑・黄がそれぞれ、x,y,z軸の縮尺と平行移動を表すセルです。 後述でファイルを添付してありますが、ファイルの使い方としては、基本的に色のついたセルだけいじってもらえればよいかと思います。 4行4列のうち、左上の3行3列(の対角成分)が縮尺を表現し 残りのセルのうち、下の3列が平行移動を表しています。 ======= 回転 次に、回転部分の解説に移ります。 今回は、ロドリゲスの回転公式という、任意のベクトルを回転軸にできる回転方法を用いることにしました。 回転軸のベクトルをvとします。 それぞれ青・緑・黄がx,y,z方向成分です。 このベクトルは公式の要請から、単位ベクトルでなければいけないため、 ベクトルの絶対値(ノルム)|v|で割ったものv/|v|を改めて定義します。 このv/|v|の3成分をRで定義された行列に入れ、 このRと回転角θによって形成されるMによって 回転行列Mが作られます。 Rの1乗が交代行列で、2乗が実対称行列になっていますね vベクトルの向きによっては、普通の3次元回転行列と等価になるので、よかったら色々試してみてください。 詳しくは過去日記で。 ======= 伸縮・移動2 その次は、またしても縮尺・平行移動の行列を掛け算します。 最初の行列と扱い方は同じですが 回転の前に演算させるのかあとに演算させるのかによって意味が異なります。 伸縮・移動1 ←z>0でないと変な描写になるとかいう 伸縮・移動2 今回の場合は、伸縮・移動1が物体そのものの伸縮と移動であるのに対して 伸縮・移動2がカメラから見た対象の伸縮と移動である、といった感じです。 ======= 遠近法 そして、これらの演算によって得られたデータを使ってグラフに描画するわけですが 3次元の物体を2次元に投影するため、直接描画に関わってくるのは3つのデータセットのうち2つだけです。もちろん4つ目のitiとかいう項目も使いません。 ただし、奥に行くにつれて小さくなるという遠近法を考慮するため 横∝x/z 縦∝y/z という数式で計算をさせます。まじでこれが遠近法のすべてでした! このとき、比例係数Aを保持しておくとなにかと便利でしょう。 ======= ウゴなう また、この物体の描画を動かすために now関数からtoday関数を引いた なう(笑)-きょう(笑) に 動きの速さ1000000くらいを掛け算した値(mod関数で周期的にしてもいいです) を、回転角度θやその他、色のついた動かしても良いセルに代入すると delボタンを押すごとに再計算されて、動く状態が見れます。 ↑now()-today()≒0.5ってことは、0時から約半日、つまり昼過ぎキャプチャーですね now-todayを1000000倍した値をaとすると b=mod(a,360) c=π/360*b d=sin(c)とかなんとかして 周期の進行度をf=b/360とかして、パーセンテージ表示するとかそういう ====== 3点消失法~遠近両用~ ところで、この描写は3点透視図法になっていますね。 物体の角度や視点の位置によって、実質的に消失点を減らせて 2点透視図法、1点透視図法、等角投影法に近似させることができます。 例 左上:真正面から見た→1点消失法 右上:y軸45°回転→2点消失法 右下:テキトーな軸で回転→3点消失法 左下:移動2をx0=y0=z0=25にして、グラフの表示範囲を横・縦ともに0.9~1.1にした→等角投影法 ======= デバグ ただし、奥行きを描写するために奥行きzに反比例したデータを用いているため、 縮尺・平行移動2を行ったあとのzがゼロや負数になるようなことがあると正しく描画されませんので気をつけてください。(先述の移動・伸縮2のgif参照) ちなみに、↑以前はよっぽど遠くを描くと曲がってしまっていました。 で、遠近法を直したのが↓これ ====== コンゴの課題~循環参照へ~ ただ、正直なところ 伸縮・移動・回転はたかだか1回や2回行いたいわけではなく何度も行いたいので できることならこのように、循環参照を用いて演算を行いたいんですよね。 ちょっと、できるかどうかそのうちテストしてみます。 任意の回転軸に拡張可能なロドリゲスの回転公式も、所詮1軸回りの回転であることには変わりありませんからね にほんブログ村
ははっ!
なんでPCが目の前にない待ち時間に限って紙媒体に向かわざるをえないから抽象的な概念への理解が早まるんだ!くそうなぜだ! 家でも書けよ紙媒体に!!PCに向かいすぎて寒気してるんだろうがー! にほんブログ村 gif作る下ごしらえにキャプチャーすんのが、なんかしらんけどすげーめんどくさい ぶっちゃけまだ慣れてないのよね GOMの静止画キャプチャはなぜか時々止まるし。 めんどくさいめんどくさい giamの段階までいけば条件反射的に楽なんだけど 今ちょっとお眠の直前の最後のひと踏ん張りでちょっとスターの生えたきのこ食べたような状態だからできるけど 普段、特に昼寝したあととか最悪 PCの前にいるだけで冷や汗が出る ホントは嫌なんじゃないか それはそれで困るんだけどな 今日は視覚的にPVってことでお茶を濁します。 やっとまともな遠近法のシステムが出来上がりました。 奥行きどうすんのかずっと考えてたんですけど答えが出なかったんで もうゴールしていいよねって感じでネタバレ見ちゃいました。 これで変な角度になってもグニャってならないですよ にほんブログ村
ローマ数字ってありますよね、IとかVとかXとか使うやつ。
ふと思ったんですが、V-Vをローマ数字で表そうとすると、どうしても式になっちゃいますよね そういえば、IIVって3のことじゃないですか。 これって、5から1を2回引いてますよね? ってことは、IIIってちゃんと3なんでしょうか? 真ん中のIにI足して、I引いた1だったり 右端のIからIを2回引いた-1だったりしないんでしょうか? VにIを4つ以上足し引きすることが禁止されていても、 IIV(とかIIXなど)が成立していたら、その辺固定できませんよね? そこで、寝ながら色々試してみたんです VVVとかXXXとか、IVIとか そしたら、ローマ数字ってパリティ(LSB)は保存するんですよ! たとえば VVVだったら5か15か-15(必ず奇数) XXXだったら30か-30か10(必ず偶数) VIIだったら7か-3か-7(必ず奇数) IIXIだったら13か9か11か-13(必ず奇数) といったようにね!!! 分岐の数は文字数に比例するみたいですね すげえ・・・セキュリティ・ホールはガバガバなのに、それを織り込み済みで誤り補正をやってのけるローマ数字すげえ!! にほんブログ村
ベクトルv(vx,vy,vz)として
Rをこのように定義すると 任意の回転軸での回転行列が M=I+Rsinθ+(1-cosθ)R^2 で表されるんですが、どうしてこんな3項のくっそ汚い感じになるのか気になりつつも 導出なんてとてもとても・・・と感じていた方がいないわけではないと思うのです 実は奥さん、このM、M=exp(R)なんですって! 指数関数をテイラー(マクローリン)展開しますと exp(x)=∑(x^n/n!) になりますよね これを応用すると、指数関数の中身がスカラーxではなく行列Rになってもなんとかなります。 exp(R)=∑(R^n/n!) なんてこたない。 では実際に、行列指数関数の関係を用いて、ロドリゲスの回転行列を導出してみましょう。 と、その前に下ごしらえ。 ベクトルvを大きさ|v|と向きnに分解しておきます。 大きさは、|v|=θ=√(vx^2+vy^2+vz^2)となって、 nはn(nx,ny,nz)という単位ベクトルとなり v=|v|nという関係があります。 ちなみにnは単位ベクトルなので、nのノルム(長さ)nx^2+ny^2+nz^2は=1です。 R/θ=rと定義すると M=exp(R)=∑((rθ)^n/n!) となります。 もしかしたら、Rを2乗した時点で何か気づいた方もいるかもしれません。 僕はそれ以上気づきませんでしたorz 小文字のrを3乗すると、r^3=-rと、1乗に戻るのです。これはテイラー展開に使わない手はないですね! あーくそ、固有ベクトル求めて対角化しようとしてた自分がアホみたいだ・・・ 総和(級数)をもう少し具体的に記してみましょう。 このように、行列rの2乗と1乗の項が交互に現れることがわかります。 そこで、1乗と2乗に仕分けてみますと はっきりと、θの奇数乗と偶数乗に別れることがわかるかと思います。 また、今度はプラスの符号とマイナスの符号が交互に現れることがわかりますね この級数を、一般化してみましょう。 このようになるはずです。 この級数、どこかで見覚えがないでしょうか? 三角関数のsinとcosですよね? ただ、総和の最初の添字が1つずれています。 そこで、n=0番目の項=1を足し引きしてみますと、しっかりとコサインになることがわかるかと思います。 これにて、ロドリゲスの回転行列は完成です。 ただ、疑問は残りますね。 どうして、この形 を肩に載せる必然性があったのかということです。 まあこのRは、固有値を調べてみると、0と±iθであることがわかりますので、 トレース(固有和)も行列式(固有積)もゼロであることがわかります。 対角成分がゼロで、いわゆる反対称(右上が左下の符号反転)な、このような実数行列のことを、交代行列と呼ぶそうです。 エルミート行列、歪エルミート行列や対称行列とも関連が深く、 Aのエルミート共役が+Aのものをエルミート行列、-Aのものを歪エルミート行列 エルミート行列と歪エルミート行列の純虚数成分をゼロにしたものをそれぞれ対称行列、交代行列と呼ぶそうです。 このような性質の行列を肩に背負うからには、ユニタリかそれに準ずる何か、つまり、ベクトルのノルムを変えない的な変換になっていてしかるべきですが、そのへんの学習はまたこんど。 にほんブログ村
僕のシステムはまだまだ発展途上なんだ!ヒーメヒメ!
そんなわけで遠近法テストに何かいい感じのカモ(素材)が転がってないか考えていたところにやってきたのが劇場版シュタインズゲート!まあ二重螺旋なんですけどね。 いちいち格子状のデータをこしらえるのが面倒だったんです。 オイラの公式をただ単にぶち込みます 回転はロドリゲスの回転公式を使いました。 ただ、どうも遠近法がまだ近似みたいなんですよね。 うんと遠いところを写そうとする(kを大きくする)と、なんかおかしなことになるのです。 遠近の式は以下のを使ってます z'=Aexp(-kz) x'=x×z' y'=y×z' 見当があるとすると、描きたい対象までの距離をr=√(x^2+y^2+z^2)ではなく単にzとだけしているからでしょうかねえ z'=Aexp(-kr) とするべきなのかもしれません にほんブログ村
先日のロドリゲスの回転公式の覚え方ね
ほどほどに覚える主義はいいんですけど やっぱり、「軸同士は右手系なのに回転方向とその法線ベクトルが右手系じゃない」のが癪に障るので、そのうちリベンジしたいです 別に妥協しなきゃだめとか言ってんじゃないんですよ にほんブログ村
たとえばフィボナッチ数列には漸化式と一般式という表現方法があるじゃないですか
シミュレーションにおける数値解と解析解は、この漸化式と一般式に相当するのかな と思ったんですが、どうもそう単純ではないようで。 三体問題を解く際に解析解なんかありませんし 流体や波動を数値シミュレーションする際にも、偏微分方程式の陽解法と陰解法があって どちらも解析解ではないわけですよ ただ、数値シミュレーションの中にも解析解よりの派閥みたいのがあるのかなとは思いましたが。 そういえば、水素原子の電子の状態を解く際に、よく かろうじて水素では厳密解があるが、複雑になると厳密解はないとされている ってよくいいますよね、よく。 なんでそんなことわかっちゃってるんだろうって思ったんですが もしかして単に三体問題のことを言ってたんでしょうか。 ただ、なんでしょう、先日の放送大学「量子化学」で見たんですが Free!ICIという興味深い解法が今になって見つかったとか エキサイチングなことが起きているようですね なんでいまになって複雑な波動関数の厳密解を解く方法が見つかったんでしょうね 俺はLCLの中でしか泳がない にほんブログ村
任意のベクトルを軸に、実数行列だけを使ってジンバルロックなしに回転を表現できる「ロドリゲスの回転公式」
複素行列を扱えない簡素な環境などでは便利ですね。 ベクトルv(x,y,z)を回転させたい場合は vの右からMをかけて、v'とすればOKです。 もしvが横ではなく縦ベクトルの場合は、Mは左からかけましょう。 回転のための行列Mは、行列Rを使ってM=E+Rsinθ+R^2*(1-cosθ)と書くんですが まず、どっちがsinでどっちがcosかとか符号などを覚えるために とりあえずθをゼロにしてみましょう。 MがRによらず単位行列EになるようでしたらOKです。 さて次はRの中身ですが Rが交代行列(反・対称行列みたいなの)であることを覚えておけば、あとはなんとかなります。 自由度は3つだけですね。なのでテキトーにa、b、cとおいてしまいましょう。 このa、b、cを適当に組み合わせることで、回転面に対する単位法線ベクトルを形成します。 単位ベクトルなので、2乗和「a^2+b^2+c^2=1」という制約がつきます。純粋に自由度が3つというわけではないですね。もう少し少ない。2かな? a=b=0にしてみましょう。 規格化条件(単位ベクトル)からc=1になるはずです。 これをRに入れ、さらにそのRをMに代入してみましょう。 はいこれは3次元の回転行列、x軸を軸とした回転行列でしたね。つまりcはx軸に相当することがわかりました。 では同様に、c=a=0にしますと、b=1になりますね これをMに入れると y軸回転を表しますが、お気づきでしょうか sinの符号がx軸の時と逆なのです。 つまり、cとb(xとy)の符号は逆にしなければいけないのです。 興味がありましたら 残りの1つ、aだけが1のz軸回転も導出してみてください。符号に気をつけてね^^ 20140807現在、ロドリゲスの回転公式のwikiがないことからもわかるように まあおそらくこのへんの範囲は習って得る知識というよりは自分から得る知識だと思うので特に心配はしてないんですが テストでこれ書いたら☓くらった!とかいうのはナシでおねがいしますよw 右手系じゃなかった!とか、よく読んで計算してみたらわかると思いますしおすし・・・ 自分、必要最低限で使えるなら、厳密な答えとは線形従属な時点で満足しちゃうタイプなんですよねー にほんブログ村
昨日の回転行列ね
色々工面してみたんですが、期待した「任意軸の回転」は得られなかったようなので、カンニングする(ぐぐる)ことにしました。 そしたら、ロドリゲスの回転公式なんてのが現れました。 単位ベクトルv(vx,vy,vz)を軸にθだけ回転する回転行列の公式 のMが、任意軸の回転行列なんだそうです。 あるのかよ!! クォータニオンと先に知り合ってしまった身としては、そんなもん行列では存在しないんだろう的な印象だったのです。 しかし、昨日の行列を書いてみたことで 結局自力では失敗しましたが、僕ですら思いつけるレベルなので「もしかしたらあるんじゃないのか」という疑惑を抱くには十分でした。 しかし、やはりなんかこう、この宇宙の次元構造を疑いたくなるいびつさですね。 クォータニオンだったらきれいにかけるというのに。 ※訂正:M=I+Rsinθ+(1-cosθ)R^2の間違いでした><さーせん にほんブログ村 |
カレンダー
カテゴリー
最新CM
[12/30 buy steroids credit card]
[09/26 Rositawok]
[03/24 hydraTep]
[03/18 Thomaniveigo]
[03/17 Robertaverm]
最新記事
(01/01)
(01/03)
(09/23)
(09/23)
(02/11)
(05/30)
(05/28)
(05/28)
(05/27)
(08/04)
(10/24)
(06/08)
(05/22)
(01/13)
(11/04)
最新TB
プロフィール
HN:
量子きのこ
年齢:
43
HP:
性別:
男性
誕生日:
1981/04/04
職業:
WinDOS.N臣T
趣味:
妄想・計算・測定・アニメ
自己紹介:
日記タイトルの頭についてるアルファベットは日記の番号です
26進数を右から読みます 例:H→7番目、XP→15(P)×26+23(X)=413番目。 A=0とする仕様につき一番右の桁はAにできませんのでご了承くださいズコー
ブログ内検索
アーカイブ
最古記事
(05/11)
(05/11)
(05/13)
(05/13)
(05/13)
(05/13)
(05/13)
(05/13)
(05/14)
(05/14)
(05/14)
(05/14)
(05/16)
(05/16)
(05/16)
アクセス解析
|