0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Delphi / AppmethodAdvent Calendar 2014

Day 14

内積と進行方向〜恋愛の奥義〜

Posted at

はじめまして、鹿間脩斗(しかましゅうと)です

日付の変更が迫る中、投稿します
全然投稿の仕方がわかりません

「内積」って皆さんご存知ですか?

高校生のベクトルの分野で習うあれです
高校生に赤点というレッテルを無感情に貼り散らすあいつです

Delphiユーザーにとっては"DotProduct"ですね

内積というのはふたつのベクトルによって値が決定されるわけですよね
でも内積ってふたつのベクトルの何を表してるのでしょうか?

答えは「ふたつのベクトルの同じ方向を向いてる量」です
「へー...」そんな反応が画面を通して伝わってきます

じゃあ次は「内積がわかって何が嬉しいか」ですよね
言い換えれば「同じ方向がどれだけか」ってなんの役に立つのかですよね

答えは「進行方向が決まる」です

具体的なコードを示しましょう

ふたつのTVector3D型の変数があったとします
ひとつは入り口の方向を、もうひとつは動いている物体の速度を表しています
enterVector
moveVector

内積を取っちゃうわけです
enterVector.DotProduct(moveVector)

この値で分岐することで進行方向が決まります。やった!

なぜって?
ソースコードっぽく説明しましょう

if DotProduct > 0
begin
  入り口と同じ向き。入れる。
end
else if DotProduct < 0
begin
入り口とは逆向き。入れない。
end;

これを利用すれば、「格闘ゲームの攻撃の当たり判定」だったり「ボールの転がる方向」だったりが計算できるわけです

最後にひとつ。先生から教わった「内積」について。
「恋愛はベクトルで表される。だってお互いが同じ方向を向いてる時が最高の状態なんだから。」

以上です
ご精読ありがとうございました

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?