Jan 27, 2007

学校の勉強が役に立った例

どうして勉強しなきゃならないんだよ!因数分解が何の役に立つんだよ!

因数分解は使いませんでしたが、Split Browserでこないだ付けた新機能の「分割されたブラウザのタイトルバーをドラッグして、他のブラウザのブラウズ領域の上下左右適当なとこにドロップすると、分割されたブラウザをその位置に移動する」を実装するにあたっては1次関数のグラフの知識を久しぶりに脳の奥底から引っ張り出してきました。嘘。実は引っ張り出してこれなかったのでぐぐった。

ブラウズ領域を対角線で4つに分割して、それぞれのどのエリアにポインタがあるのかを調べるという計算。対角線の1次関数の式を作って、そこにYの値を放り込んで「対角線上のX」の値を求め、実際のXの値と比較することで、今ポインタがその対角線より左にあるか右にあるかが分かる。この計算を2つの対角線について行えば、ポインタが対角線によって分割された4つの領域のどこにあるのかを求めることができる。

……という計算なんだけど、学校でやった計算とはY軸のプラスマイナスが逆だし、screenXとscreenYを参照するから原点が(0, 0)からズレてるし、グラフの傾きがブラウズ領域の縦横の大きさによって変わるし、てな感じで、単純な計算なのにえらく苦労したですよ。中学か高校の頃だったらこんなの一瞬で解けたんだろうなあ。

まあそんな感じで紙の上に図やら式やらを書いて四苦八苦した結果がsplitbrowser.jsSplitBrowser.getDropPositionOnContentArea()なんですけど。

エントリを編集します。

wikieditish message: Ready to edit this entry.











拡張機能