2013年4月6日土曜日

タイムトンネルの作り方- How to make a time tunnel (2) -


前回からの続き。
元画像を用意し、

トンネル内側状に変形したところ。
元画像の走査位置を少しずつすらしてアニメーションにし、
せっかくなので回転効果と、
暗闇グラデーションを加えてみる。

あとは元画像でカッコいいのを用意すれば完成!
でもこんな風なタイムトンネルもいいなぁ・・・
Read More...

2013年4月4日木曜日

タイムトンネルの作り方- How to make a time tunnel (1) -




まもなくリリース予定のタイムマシン(2013年4月11日公開)に合わせて、
タイムトンネルも作ってみることにした。

【タイムトンネルの作り方】

(1) 横長長方形の、上下左右繰り返し用画像を用意する
(2) (1)をトンネル内側形状に変形し、その画像を保存しておく
   ←左右繰り返し画像であれば、切れ目ない帯になるはず。
(3) 元画像を少しずつ下方向にずらしつつ、(1)(2)を繰り返す
(4) (3)からgifアニメを生成する

まず元画像を用意する。

練習として円に変形してみる。

遠近法的処理を加えてトンネル内側状(こんな言葉はない?)にする。
今回はjavaでベタに画素移動してみたけど、たぶんgimp2やblenderに習熟していればカンタンにできるのかも・・・。

ためしに時計画像でやってみると・・・
気持ち悪い。
続きはまた今度。
目指すはドラえもんのタイムトンネル。
Read More...

2013年3月22日金曜日

float、double、IEEE、不思議の国のアリス

【参考】1,2,3,4,,


浮動小数点方式で小数を表現する場合、
32ビット使う方法(=IEEEの単精度float型
64ビット使う方法(=IEEEの倍精度double型
がある。
ちなみにint型32ビット符号付整数、long型64ビット符号付整数である。

単精度を例にとる。

32ビット=符号部S(1)+指数部E(8)+仮数部M(23)


によって、

(-1) S × 1.M (2) × 2 E-127


を表現する。仮数部の「1.M」という形を正規化という。
0 ≦ E ≦ 254 ∴ -127 ≦ E - 127 ≦ 127 なので、
「1.M」を元にして小数点が左右に127ずつフワフワ動く感じ。

ここでめっちゃちっこい数(0に近い数)を考えてみる。

それは E = 0 のときで、1.0...00 (2) × 2 -127
その次に小さい数は、 1.0...01 (2) × 2 -127
その差は、        0.0...01 (2) × 2 -127-150

刻みが-150ごとの定規なのに、最初の刻みだけ、0から-127の場所にある、ってこと。

これは、

目盛りが1mmごとの定規なのに、最初の目盛りは、0から8388608 mm = 8.4 km の場所にある

ってこと。馬鹿みたい。
この定規は、進んだ距離が2倍になると、目盛り幅も2倍になる、という性質をもつ。
たぶん、アリスの不思議の国あたりにある。「浮動」っていうのもチェシャ猫っぽい。
もし何かの刑罰で、
「〇目盛り進むまで決して休んではならない」みたいなルールでこの定規を歩かされたら、
かなり精神的に「くる」のは間違いない。

このままだと、-127より0に近い数は、アンダーフローで0化するので計算に支障が出る。
そこで、

32ビット=符号部S(1)+指数部E(8)+仮数部M(23)


によって、

(-1) S × 1.M (2) × 2 E-127


ただし、E = 0ならば、

(-1) S × 0.M (2) × 2 -126

を表すことにする。仮数部の「0.M」という形を正規化という。

現在これらの仕様は、IEEE754 2008として策定されている。

なお、

非正規数が発生すると、演算が遅くなるらしい。
floatは計算時にはdoubleに変換されるので、特に速度メリットはないらしい。格納メモリは半分で済むけど。

Read More...

2013年3月15日金曜日

ソートアルゴリズムの計算量をくらべる













ソートアルゴリズムの計算量をまとめてみた。
ただし、マージソート・クイックソート・シェルソートあたりの優劣は、
ソート対象の個数や状態によって変動する。

例えばこの表からでも、

クイックソートはソート個数が一定以上になると、シェルソートより速くなりそう・・・

って事がわかる。

理由としては、「n log n」 vs 「n exp(1.25)」 はnによって大小関係が変わってくるから。
分岐点を探してみる。

n log n = n exp(1.25) ⇒ log n = n exp(1/4)

簡単のために、n = 2 exp(p) とおくと、

p = 2 exp(p/4) ⇒ p exp(4) = 2 exp(p)

p = 16, n = 2 exp(16)

よって、n > 2の16乗(=65536) だと、n log n < n exp(1.25) となり、
オーダが逆転してしまう。
Read More...

2013年3月13日水曜日

小学生でもわかる、補数による負数表現


歴史的経緯とか言葉の意味とか、
「最上位ビットで+/-を表現するだけ」だと00000000も10000000も「0」になって困るとか、
とにかく難しいことは忘れる。

まずコンピュータ=

引き算の筆算で、「隣の位から10借りてくる」ことがどうしてもわからなくて、算数が嫌いになりそうな小学生

だと考える。
(ちなみに元教師の経験から言うが、
「隣の位から借りてくる」をうまく教えられるかどうかで教師の力量がわかる。)

例題:98765 - 45678












一の位から困る。泣き出す小学生。
「隣の位から」借りると難しいので、どーんと99999借りることにする。
もちろん後で返すつもり・・・たぶん。












すると、もちろん「99999 - 45678」を先に計算してもいい。
絶対に「隣から借りる」必要はないので、小学生も嬉しそう。














計算すべきは「98765 + 54321」に変身する。



引き算じゃなくなった! でもこの心の不安はなんだろう・・・
借りていた「99999」はあとで返す、という約束を思い出す。
でも「 - 99999」は、また「隣から借りてくる」苦手な計算になる。
小学生がまた泣きそう。

「あと1だけ貸してくれまへんか?あとで100000まとめて返しまっさかい・・・」
「わかってるやろな? 利息はトイチやで」

1借りたので、+ 54321 ⇒ + 54322 になる。











100000を返す = あふれた桁を消す(無視する)。











やったことを振り返る。

引く数45678に対して、99999 - 45678 = 54321を計算した。
これは各位の数を、9に対して反転させた数。
54321 + 1 = 54322を計算した。
98765 + 54322を計算した。
その答えから、溢れた桁の数を消した。

--------------------------------- きょうのまとめ ---------------------------------

引き算は、「引く数の各位を反転させた数 + 1」の足し算、に変身できる。溢れた桁は無視する。

ふりかえると、
元の数□□□□□+反転させた数■■■■■ = 99999
元の数□□□□□+反転させた数■■■■■ + 1 = 100000(桁が1つ増えた!
になっている。

反転させた数 + 1は言いにくいので、桁を1つ増やすのに補うべき数、ということで、
補数と呼ぶことにする。

まとめると、
(引かれる数)-(引く数) ⇒ (引かれる数)+(引く数の補数

Read More...

2013年3月12日火曜日

When You Love A Woman (Journey)

3/17のJourney金沢公演の予習第2段。

昨日ヤホーで調べていたら、すごく歌がうまい人を見つけてしまったんですよ・・・
「Journey」って、知ってます? でもJourneyじゃないんですよ・・・


In my life I see where I've been
I said that I'd never fall again
Within myself I was wrong
My searchin' ain't over...over
I know that

※ain't = 「be動詞 + not 」「have + not」の俗語

see where I've been in my life = 人生を振り返る、
fall again = fall in love again、という感じ。
もちろん、I'd = I would。
ちょっと深入り。なんでsearchであって、seeklook forじゃないのか。。。

そういえば、『Way Back Into Love』でも、

I've been watching but the stars refuse to shine, 
I've been searching but I just don't see the signs, 

と歌っていたし。辞書みてもいまいちわからず。。。
とりあえずテスト対策としては、searchの目的語はモノじゃなくて(探す)場所!

(When you love a woman)
You see your world inside her eyes
(When you love a woman)
You know she's standin' by your side
(A joy that lasts forever)
There's a band of gold that shines waiting somewhere...oh yeah

band of gold = wedding band = wedding  ring = 結婚指輪のことらしい。

If I can't believe that someone is true

To fall in love is so hard to do
I hope and pray tonight
Somewhere you're thinkin' of me girl
Yes I know...I know that

これをキモくなく歌うのは至難の業だ。。。

It's enough to make you cry
When you see her walkin' by
And you look into her eyes

※look into ~ = ~を覗き込む

・・・もしかすると結婚式? それとも日常生活?

When you love a woman...
When you love, love, love, love
When you love a woman
You see your world inside her eyes

★ おまけ ★

「walk by ~」を調べていたら思わぬ拾いモノ。。。


歌詞と解説はこちら
「Let him know that you are walking by his side」と出てくる。
もしや「Raise me up」の男版の結婚式ソングか?・・・と思いきや失恋ソング?
いい歌かもしれない。
Read More...

Don't Stop Believing (Journey)

3/17のJourney金沢公演の予習第1段。





英語板でも結構盛り上がってる感じ。
というか皆さん、深い、深すぎるよ・・・。


Just a small town girl, 
livin' in a lonely world 
She took the midnight train 
goin' anywhere 

Just a city boy, 
born and raised in south Detroit 
He took the midnight train 
goin' anywhere

「boy meets girlモノ」っぽい。
南デトロイトのイメージがわからないので、いつか行ってみる。
「二人は出会った」とは書かれて無いけど、次段落により「出会った」とする解釈多し。


A singer in a smokey room 
A smell of wine and cheap perfume
For a smile they can share the night
It goes on and on and on and on

勝手に想像するなら、
ミュージシャンとしての成功を夢見て上京した「a city boy」(=作者?)は、
同じく孤独を抱えた「a town girl」と出会い、
水商売をする彼女のヒモ的存在になり、
才能の限界を感じつつ/感じるからこそドラッグにも溺れ(?)、
未だに売れない「a singer」でくすぶっている。

ところが「For a smile they can share the night 」。
ここでネット上の解釈まっぷたつ。
でもここはやっぱり否定的ニュアンスだろう。
煙草と香水から、水商売のイメージをぐっと進めて、売春婦の姿が浮かんでくる。
というかそう解釈しないと、この一文はスッキリしない。
この歌をテーマにしている映画『モンスター』の主人公が売春婦であることも、裏づけ。
英語板でも同意見多い。

というわけで、同棲イメージは間違い。
「room」は下宿ではなく、居酒屋との判定がここで下る。
しかしgleeの爽やかイメージとのギャップたるや・・・高校生・・・


Strangers waiting, up and down the boulevard
Their shadows searching in the night
Streetlights people, living just to find emotion
Hiding, somewhere in the night. 


※boulevard ・・・大通り

「売春婦読み」が好きな人はここも全部それで解釈してるっぽい。
でもそれだと、大通りより裏通りな気もするので、
いろんな「街灯の人々」の総称、というのが適当。
ミュージシャンも、画家も、ストリートパフォーマーも。
この辺から「Don’t Stop Believing」なイメージがだんだん。
今は闇に生きるこんな暮らしだけど、いつかは日の当たる世界で自分も。。。


Working hard to get my fill,
Everybody wants a thrill
Payin' anything to roll the dice,
Just one more time


※get one’s fill ・・・おなかいっぱい食べる

Some will win, some will lose 
Some were born to sing the blues 
Oh, the movie never ends 
It goes on and on and on and on

人生は結末のない映画だから、どうなるかわからない。でも、ここの、
It goes on and on and on and on
は明るく前を向いている。二段落目の投げやりな気持ちは、もうない。


Don't stop believin' Hold on to the feelin' Streetlights people  
Don't stop believin' Hold on Streetlight people  
Don't stop believin' Hold on to the feelin' Streetlights people

※hold on to ~ ・・・ ~を持ち続ける、手放さない

Read More...