mots quotidiens.
Daichi Mochihashi (持橋大地) daichi <at> ism.ac.jp by hns, version 2.10-pl1.

先月 2009年07月 来月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

2009年07月05日() [n年日記]

#1 バルセロナの思い出

現在充電期間なので, 研究と直接関係ない話。
言語系の会議に行くのは久し振りですが, ACL/EMNLP2004でバルセロナに 行った際, 会場は Forum Barcelona 2004 という海の近くの国際会議場で, フードコートに各種の店が並ぶ活気溢れる空間でした。
昼食を松本研メンバーでフードコートで取ったとき, ドリンクは共通に Forum Barcelonaのロゴの入った上の写真の容器で, 1.5€のデポジットになっていて, 返却するとお金が戻る仕組みになっていました。

これは飲み口が三角になっていてとても飲みやすく, 手にもよく馴染む素晴らしい デザインだと思ったのですが, よく見ると, 数学的にもとても美しい構造をしています。 これは右のような, 正三角形を囲む3つの円弧からなる図形を一辺(2/3π)だけ ひねりながら上昇させた立体で, しかも測ると, 上の辺の長さと立体の高さの比はちょうど1:2になっています。
バルセロナから帰った後これを何とかモデル化しようと思っていたのですが, 極座標で考えていたりして上手くいきませんでした。 が, 日曜日に普通の直交座標でちょっと考えたらできたので, 以下その過程。

正三角形を図のようにとると, 円弧上の点の偏角をθとすれば, 0≦θ≦π/3のとき 円弧上の点は単純に(cosθ,sinθ)です。π/3<θ≦2/3πのときは, 正三角形を左に1 移動して第2象限にあると思うと偏角はθ+π/3なので, 右に戻すだけ。 2/3π<θ≦πのときは上の頂点が原点と重なるように平行移動すると偏角は θ+2/3πになるので, 移動分の(1/2,√3/2)だけ元に戻せばOK。

まとめると図のようなパラメータ表示になり, Mathematicaで書くと

f[t_] := N[
             If[ t < Pi/3,
                 {Cos[t], Sin[t]},
                 If[ t < 2 Pi/3,
                     {Cos[t+Pi/3]+1, Sin[t+Pi/3]},
                     {Cos[t+2 Pi/3] + 1/2, Sin[t+2 Pi/3] + Sqrt[3]/2}
                 ]
             ]
         ]
です。 後はこれを原点中心に移動して, 回転行列を掛けてからさらにz方向を加えて拡大。
g[t_,s_] :=
    Block[
        {m = {{Cos[s], -Sin[s]},{Sin[s], Cos[s]}}},
        m . (f[t] - {1/2,1/(2 Sqrt[3])})
    ]
h[t_,z_] :=
    Block[
        {r = 7.5/4.8 / (2 Pi/3),
         y = r z + 1},
        Append[y g[t,z], z]
    ]

プロットすると以下のようになります。

ParametricPlot3D[
    h[t,z],
    {t,0,Pi},{z,0,2 Pi/3},
    Mesh->False,
    BoxRatios->{1,1,2},
    ViewPoint->{1.3,-2.4,2}
] 

ということで, グレート!
何年も気になっていたのですが, これでバルセロナの思い出を, Mathematicaの中に留めることができました。
(実際と捻りが逆向きですが, モデルではそちらの方が綺麗だったので, 上ではそうしてあります。)


2009年07月20日(月) [n年日記]

#1 ソフトウェアプログラマ

工藤君のエントリ 面白いですね。
工藤君は「ハードウェア」寄りなのでそちらの方が多いですが, 僕はどう見ても「ソフトウェア」プログラマなので, *1 「ソフトウェア」プログラマの方に対応する記述を追加。 僕は自分がソフトウェア寄りなので, 逆に最適化や省メモリ化を意識的に 考えないといけないと思っていて, LispやHaskellではなく, あえてCやC++で書いて いるのもそういう理由だったりします。
ただ, 最近は Stalin という超最適化 scheme コンパイラが超爆速(普通のCより速い) という話を聞いているので, 若干揺れています。 *2
それと面白いのは, 例えば東大では, 「ハードウェア」プログラマを養成しているの が理学部 (情報科学科)で, 「ソフトウェア」プログラマを養成しているのが工学部 (計数工学科)だ, ということです。本来逆なんじゃないかと前から思っているのですが..。
*1: 自分が「プログラマ」だとは思っていないですが, ここでの区別では, という意味。
*2: 試してみると, 簡単なプログラムでもコンパイルがかなり遅いので, 大丈夫かなという気はしますが..。

2009年07月31日(金) [n年日記]

#1 Graph

Excel(またはPPT)の謎のグラフ作成術を使わなくても, Gnuplot+png+msttcorefonts で綺麗なグラフが描けるらしい。

上の収束時間にはものすごい違いがあるのですが(1分5秒と11時間), ログスケールなのであまりそう見えないのが残念。。


3 days displayed.
タイトル一覧
カテゴリ分類
 なかのひと
Powered by hns-2.10-pl1, HyperNikkiSystem Project