X(x1,y1,z1)
我需要驗證,如果它是一個圓錐體裏面的點。M(x2,y2,z2)
錐體的頂點。 (圓錐體的頂點)N(x3,y3,z3)
圓錐體底部中間的點。
我發現,如果一個點X是在圓錐,它需要驗證該方程:
cos(alfa) * ||X-M|| * ||N|| = dot(X-M,N)
其中點是2個向量的標量積,和阿爾法是它們之間的角度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
謝謝你furikuretsu!奇蹟般有效。 –
很高興你喜歡它,夥計們! – fyodorananiev