对于以下形式的椭球
以方向向量 为中心,以点 为中心,如何判断点 是否在椭球体内?
附加说明,几何形状实际上是 a=b(椭球体),因此一个轴足以定义方向
注意:我在论坛中看到了类似的问题。但是,它是关于原点处的椭球体并且没有任何任意方向,并且这里同时考虑任意位置和方向。
找到仿射变换 M,将这个椭圆平移到轴定向的椭圆上(通过 -p 平移并旋转以对齐方向向量 r 和适当的坐标轴)。
然后将此变换应用于点 p 并检查 p' 是否位于轴导向椭球体内,即
x^2/a^2+ y^2/b^2+z^2/c^2 <= 1
创建一个坐标系
E
,中心位于 p
,椭圆的长轴与 r
对齐。创建一个可以将全局坐标转换到坐标系E
的矩阵。然后将变换后的坐标代入椭圆方程。
中心点p和“方向向量”r不足以完全指定椭球体的位置,还剩下一个自由度。你的问题是不确定的。
如果向量 r 是从原点到极点的单位向量,则测试点 q 是否在椭圆内(或椭圆上)为:
v = q-p; // 3d vector difference
dot = v.r; // 3d dot product
f = dot*dot;
g = v.v - f; // 3d dot product and scalar subtraction
return f/(b*b) + g/(a*a) <= 1
请注意,如果椭圆对齐以使 r 为 z 单位向量,则上面的测试将转换为在椭圆中包含点的通常测试。