Algorithm 如何检查点是否位于具有方向的椭球体内?

Algorithm 如何检查点是否位于具有方向的椭球体内?,algorithm,3d,geometry,distance,computational-geometry,Algorithm,3d,Geometry,Distance,Computational Geometry,对于形状的椭球体 当方向向量和中心在点上时,如何确定点是否在椭球体内部 另请注意,几何体实际上是a=b(球体),因此一个轴足以定义方向 注:我在论坛上看到类似的问题。但是,它是关于原点处的一个椭球体,没有任何任意方向,这里考虑任意位置和方向。创建一个坐标系E,中心位于p,椭圆的长轴与r对齐。创建一个矩阵,该矩阵可以将全局坐标转换为坐标系E。然后将转换后的坐标放入椭圆方程。创建一个坐标系E,中心位于p,椭圆的长轴与r对齐。创建一个矩阵,该矩阵可以将全局坐标转换为坐标系E。然后将变换后的坐标放入椭

对于形状的椭球体

当方向向量和中心在点上时,如何确定点是否在椭球体内部

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


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

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

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

找到仿射变换M,该变换以轴定向的方式平移该椭圆(平移-p并旋转以对齐方向向量r和适当的坐标轴)。
然后将此变换应用于点p,并检查p'是否位于轴定向椭球体内,即

x^2/a^2+y^2/b^2+z^2/c^2查找仿射变换M,该变换将此椭圆平移为轴方向(平移-p并旋转以对齐方向向量r和适当的坐标轴)。
然后将此变换应用于点p,并检查p'是否位于轴定向椭球体内,即

x^2/a^2+y^2/b^2+z^2/c^2中心点p和“方向向量”r不足以完全指定椭球体的位置,只剩下一个自由度。您的问题是不确定的。

中心点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
v=q-p;//三维矢量差分
点=v.r;//三维点积
f=点*点;
g=v.v-f;//三维点积与标量减法

返回f/(b*b)+g/(a*a)如果向量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
v=q-p;//三维矢量差分
点=v.r;//三维点积
f=点*点;
g=v.v-f;//三维点积与标量减法

返回f/(b*b)+g/(a*a)我必须补充一点,几何体实际上是一个a=b的扁球体,因此,我相信一个轴足以定义方向。然后按照其他答案。使用Gram-Schmidt正交化过程,您可以从给定的方向向量和任何其他(非平行)方向向量构建旋转矩阵。我必须补充的是,几何体实际上是一个a=b的扁球体,因此,我认为一个轴足以定义方向。然后按照其他答案。可以使用Gram-Schmidt正交化过程,从给定方向向量和任何其他(非平行)方向向量构建旋转矩阵。