DOSEIの日記

技術メモ+日常ログ

朝からゼミ。今回もいまいちよくわからないが、まぁよし(ぉ

昼飯

うどんを食べに、麺聞録(こんな字だっけ?)へ。ついでにカキ氷も購入。今年最後だというので。あずきを頼んだ。最初はうまかったのだが、余ってるのか、ありえないほどあんこを詰めてくれていて、途中で気持ち悪くなった。

その後

バイト。帰宅してから、こっそりヒルベルト曲線の3次元版のプログラム作成。

これを書くのです。あ、できちゃった。
最初は、回転行列を渡そうかと思ったが、それはやめて(面倒だから)、代わりに置換(数列)を渡すことに。この場合(どの場合だよ)4次の対称群なので、回転行列の要素は全部 ±1 か 0 の置換行列っぽいものになる。これを置換に見立てて、拡張置換(なにそれ)として使う。
例えば、[1 0 0; 0 0 1; 0 −1 0] は、x'=x, y'=z, z'=−y と置換するが、これを [1 3 −2] と表す。合成は、絶対値が置換で、符号つきの場合は符号の反転をする。
基本図形の座標を原点が対称の中心になるように ±1 で表しておけばこれを置換したものがそのまま回転した座標になる。
で、ある状態 p から8通りの置換を行い、再帰的に基本図形を描画する。適当に考えた割にはうまくいってびっくりw 実はかなりよくできたアルゴリズムなのかも…(自画自賛?)
ただ、8通りの置換を手動で与えてるのがおしい。基本図形の形から自動生成できないのかなぁ。