给定一个点P(xp,yp,zp)和一个椭球,其半轴和中心是已知的,它的方程:x^2/a^2+y^2/a^2+z^2/b^2=1。
点 P 位于椭球外一定距离处。从 绘制的椭圆体的切线集P形成一个圆锥曲面。有必要找到这个圆锥和椭球的接触点的一般形式(很明显,这些点将属于椭圆,也就是说,问题本质上归结为找到它们之间的接触椭圆方程圆锥体和椭球体)。
是否可以通过传递到球坐标来简化这里的问题?如果是,如何进行?如果不是,那么问题是一样的。
给定一个点P(xp,yp,zp)和一个椭球,其半轴和中心是已知的,它的方程:x^2/a^2+y^2/a^2+z^2/b^2=1。
点 P 位于椭球外一定距离处。从 绘制的椭圆体的切线集P形成一个圆锥曲面。有必要找到这个圆锥和椭球的接触点的一般形式(很明显,这些点将属于椭圆,也就是说,问题本质上归结为找到它们之间的接触椭圆方程圆锥体和椭球体)。
是否可以通过传递到球坐标来简化这里的问题?如果是,如何进行?如果不是,那么问题是一样的。
来自该点的射线锥
P = (x,y,z)与椭球相接触的点的显式表达式:这些点以参数形式给出。如果您设置
omega = 2pi, 并t从 0 运行到 1,则此表达式将遍历所有必需的点。为了推导出这个表达式,我使用了一个符号数学系统
sympy。逐步输出作为 Jupyter notebook 发布。这个想法很简单。我们需要切换到一个坐标系,在这个坐标系中,椭圆被转换成一个单位球体,并且点
P在轴上Z。在这种情况下,球体与圆锥体接触点的方程很容易自然地推导出来。剩下的只是将坐标转换回来。为此,我利用了sympy没有用无穷无尽的字母链四处寻找的优势。更新
我在Jupyter notebook中添加了一种数值方法来计算切线椭圆。
这个想法是
C在坐标系中找到三个向量 - 切圆的中心和两个正交向量,其旋转描述了所需的圆。坐标系中的这些向量
A形成一个正切椭圆。在 Python 中计算三个向量的函数(不是 Matlab 中的剪影)。
要计算椭圆的点,您需要围绕点旋转矢量
center:该矩阵
r_tan具有三行 100 个坐标。这些线对应于坐标x和。yz从具有坐标的点切线到具有半轴 1 和 4 的椭球的示例
(5,5,5)由于椭球是一个以原点为中心的平板,具有短 OZ 轴,即 很简单,你可以试试直接的方法。
如果从椭球
(px, py, pz)上的一点到一点画切线(tx, ty, tz),那么椭球在该点的法线垂直于切线,点积为零。根据 Kornov 的参考书,此时椭球表面的法线看起来像(tx/a^2, ty/a^2, tz/b^2)这样(这里我的系数可能会出错)但是右边等于一(根据原方程),所以我们得到了切割椭球的平面的方程
为了找到截面的中心,我们用z表示,将它代入原方程,我们得到一个OXY中的椭圆,它是截面椭圆的投影。对他来说,中心不难找到,那我们就回到三维空间。
仍然要找到椭圆的轴(未完成)