はじめまして、鹿間脩斗(しかましゅうと)です
日付の変更が迫る中、投稿します
全然投稿の仕方がわかりません
「内積」って皆さんご存知ですか?
高校生のベクトルの分野で習うあれです
高校生に赤点というレッテルを無感情に貼り散らすあいつです
Delphiユーザーにとっては"DotProduct"ですね
内積というのはふたつのベクトルによって値が決定されるわけですよね
でも内積ってふたつのベクトルの何を表してるのでしょうか?
答えは「ふたつのベクトルの同じ方向を向いてる量」です
「へー...」そんな反応が画面を通して伝わってきます
じゃあ次は「内積がわかって何が嬉しいか」ですよね
言い換えれば「同じ方向がどれだけか」ってなんの役に立つのかですよね
答えは「進行方向が決まる」です
具体的なコードを示しましょう
ふたつのTVector3D型の変数があったとします
ひとつは入り口の方向を、もうひとつは動いている物体の速度を表しています
enterVector
moveVector
内積を取っちゃうわけです
enterVector.DotProduct(moveVector)
この値で分岐することで進行方向が決まります。やった!
なぜって?
ソースコードっぽく説明しましょう
if DotProduct > 0
begin
入り口と同じ向き。入れる。
end
else if DotProduct < 0
begin
入り口とは逆向き。入れない。
end;
これを利用すれば、「格闘ゲームの攻撃の当たり判定」だったり「ボールの転がる方向」だったりが計算できるわけです
最後にひとつ。先生から教わった「内積」について。
「恋愛はベクトルで表される。だってお互いが同じ方向を向いてる時が最高の状態なんだから。」
以上です
ご精読ありがとうございました