考虑:
X(x1,y1,z1)
the point I need to verify if it is inside a cone.M(x2,y2,z2)
the vertex of the cone. (the top point of the cone)N(x3,y3,z3)
the point in the middle of the cone s base.
我发现,如果一个点X在锥体上, 它需要验证这个方程式:
cos(alfa) * ||X-M|| * ||N|| = dot(X-M,N)
圆点是两个矢量的标量产物,而藻类是这两个矢量之间的角。
根据公式,我计算出:
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
是否在锥体内,我就必须在公式中加上 ,而不是
。这是否正确?
其用法是: 我开发了一个游戏, 当一个物体在它的视野中时, 机关枪必须开始射击 。 这个视图将是一个锥体 。 锥体的顶点在机关枪中, 锥体的底部在前面的某个已知距离。 进入这个锥体的任何物体, 机关枪都会射中它 。