僕が「内積が便利だなと思った」という話をしてる部分が、全然意味わからんのじゃないか。思って、どういうことかというサンプルをActionScript3.0で書いてみました(DotProduct.as)。このプログラムの肝は、throughPoint関数。このプログラム、ボールの移動スピードを管理している変数dxは、正の値にも負の値にもなります。このボールが画面の真ん中、座標200を超えたら上または下に移動させたい。このような場合、どのように判定を書けばシンプルに書けるか?っという話ですね。内積について、ざっくり説明すると、ベクトルaと、ベクトルbをかけると、二つの成す角cosθが求まるという公式です。ここでポイントになるのは、このcosθが求まるという点。cosは、90度から270度までが、負の値。0度から90度と、270度から360度までが正の値。なんで、移動前の位置から目的地までのベクトルaと、移動後の位置から目的地までのベクトルbを求めて、これを掛けあわせます。目的地を通過したならば、aとbのなす角は180度になるはず。掛けた結果は負の値になると。逆に通過していないならば、aとbのなす角は0度なので、正の値となるはず。いう処理を行っているのが、throughPoint関数。背景グラフィックはこれ。»このブログについてMac、デジカメ、音楽、楽器ガジェット、プログラミング、iPhone、ケータイなど色々興味を持ったことについて書いているブログです。Storeより発売中!石丸ソフトウェアミクハモVocaloid2のVSQファイルのハモリを作るソフトです。作ってみようと想いたちました。30RSSを表示する。