であるかどうかを確認し考えてみましょう:ポイントは3D空間でコーンの内側に
X(x1,y1,z1)
私はそれがコーンの内側にあるかどうかを確認する必要がポイント。M(x2,y2,z2)
円錐の頂点。 (円錐の頂点)N(x3,y3,z3)
円錐の底の中央にある点。
私は、ポイントXがコーン上にある場合、それはこの式を検証する必要があることが分かった:
ドットが2つのベクトルの内積であり、アルファは、これらの間の角度であるcos(alfa) * ||X-M|| * ||N|| = dot(X-M,N)
2つのベクトル。
式に基づいて、私はそれを計算:
X-M = (x1-x2,y1-y2,z1-z2)
だから、
cos(alfa)
* Math.sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)
* Math.sqrt(x3^2 + y3^2+z3^2)
= x3(x1-x2) + y3(y1-y2) + z3(z1-z2)
は生憎上記の計算は私に間違った結果を与えているようです。私は間違って何をしていますか?
また、X
が円錐の内側にあるかどうかを確認するには、=
の代わりに<=
を入力する必要があります。これは正しいです?
この使い方は次のとおりです。オブジェクトが「ビュー」内にあるときに機関銃が発砲しなければならないゲームを開発します。このビューは円錐です。コーンの頂点は機関銃の中にあり、コーンの基部はある距離先にあります。このコーンに入っている物体があれば、マシンガンがそれを撃つでしょう。
これはすばらしい答えであり、私は生産ソリューションのように見えるものに非常に近いです! – Tim
フリークレットありがとう!魅力のように動作します。 –
あなたはそれが好き、非常にうれしい! – fyodorananiev