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

  • 0
    いいね
  • 0
    コメント
    この記事は最終更新日から1年以上が経過しています。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    この投稿は Delphi / Appmethod Advent Calendar 201414日目の記事です。