英語では、Closest Pointと言うのですかね?
ここで、躓いてたらいかんので画像でどういった事か説明します。
図①
といった感じです。
点A,B,Cのベクトル値は確定してるものとして進めていきます。
今回は点Pを求めるにあたって、外積を使い求めていきます。
内積でも、求められますが 外積で求めていきたいと思います。
理由は、外積だと上で求めたものをちょっと応用すれば直線同士の交差点も求められます。
こんな感じです。 すばらしい!
内積だと、これは無理かな~と。すみません、憶測です^^
では、早速やっていきます。※関数とかTP用の表現を使っています。
はじめに、線分AB上の点を求める式です。こちらにも書きましたが復習です。
図②
TP式①-- Apos+(unit(AB)*length(AP))
ベクトルAとABは、わかっていますので、ベクトルAPの大きさがわかれば、ベクトルPが求まります。
では、ベクトルAPの大きさを求めていきます。
わかりやすいように、辺d,e,fを割り当ててみました。
ベクトルAPの大きさがfということですね。
図③
ピタゴラスの定理から、fを求めるにはeとdが解ければ求まりますね。
TP式②-- f = sqrt(d*d-e*e)
これで、ベクトルAPの大きさは求まります。
後はeとdを埋めていくだけです。
dの方はベクトルACの大きさを求めればよいので、求まります。
さてeですが、ここで外積を使います。
TP式③-- e = length(AB x AC)/length(AB)
※TP式③のベクトルABの大きさは、1でもなんでも揃っていれば良いらしい。
式の参考↓
こちらの、2Dでのある点から直線までの距離より
全ての値の準備ができたので、TPに組み込んでいきます。
上記の三つのTP式を組み込みました。
さてさて、これの使いどころはいつになるのやら。。
近々公開かな。
おおっ、これはすっごくいい感じ!すっとやりたかったんです
返信削除次回はとても楽しみ^^
どもです^^
削除パーティクルを飛ばす方向のサンプルをとるためには、こういった数学的手法の組み合わせを覚えておくと強いですね。
iGouさんにも、とても助けられています。
自分は破壊系あんまりなので、破壊系ネタ楽しみにしています!!