如何检查一个点是在一个方向椭圆体内?

时间:2015-06-07 10:14:48

标签: algorithm 3d geometry distance computational-geometry

对于形式为

的椭圆体

formula

使用方向向量formula并居中于点formula,如何查找点formula是否在椭球内?

另外注意几何实际上是a = b(球体),因此一个轴足以定义方向

注意:我在论坛中看到了类似的问题。但是,它是关于原点上的椭球,没有任意方向,这里考虑了任意位置和方向。

4 个答案:

答案 0 :(得分:2)

找到仿射变换M,它将这个椭圆转换为面向轴的椭圆(通过-p和旋转平移以对齐方向矢量r和正确的坐标轴)。
然后将此变换应用于点p并检查p'是否位于轴向椭球内,即
x^2/a^2+ y^2/b^2+z^2/c^2 <= 1

答案 1 :(得分:1)

创建一个坐标系E,其中心位于p,椭圆的长轴与r对齐。创建一个矩阵,可以将全局坐标转换为坐标系E。然后将变换后的坐标放入椭圆方程中。

答案 2 :(得分:1)

中心点 p 和“方向矢量” r 不足以完全指定椭圆体的位置,剩下一个自由度。你的问题是不确定的。

答案 3 :(得分:0)

如果矢量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单位向量,则上面的测试转换为通常的测试,以包含椭圆中的点。