问题来源
在火灾报警电话时,基站一般难以确定与呼叫手机的距离,但是可以确定呼叫手机到两个临近基站的距离差值(原理待考证)。问题在于:能否根据呼叫手机到三个临近基站的两两距离差值确定呼叫手机的位置。
简化描述为:根据目标点到三个锚点间两两的差值确定空间中目标点的位置(轨迹)。
\left\{\begin{aligned} PA-PB =& d_1\\ PB - PC=& d_2 \\ PC - PA=& -(d_1+d_2) \end{aligned}\right.
注意:(1) d_1,d_2均可以是负数;(2) 以上三个方程实际上等价为两个方程,因为任意一个方程均可以由另外两个导出。
设P坐标为(x,y,z),A,B,C坐标分别为(a_1,b_1,c_1),(a_2,b_2,c_2),(a_3,b_3,c_3),则以上问题转化为:
\left\{ \begin{aligned} & \sqrt{(x-a_1)^2+(y-b_1)^2+(z-c_1)^2} - \sqrt{(x-a_2)^2+(y-b_2)^2+(z-c_2)^2} = d_1 \\ & \sqrt{(x-a_2)^2+(y-b_2)^2+(z-c_2)^2} - \sqrt{(x-a_3)^2+(y-b_3)^2+(z-c_3)^2} = d_2 \end{aligned} \right.
注意:以上方程包含三个未知数,而只有两个方程,因此该方程并不只有唯一解。
简化描述为:根据目标点到三个锚点间两两的差值确定空间中目标点的位置(轨迹)。
数学描述
设目标点为P,三个锚点分别为A,B,C,目标点到三个锚点的距离差满足如下关系:\left\{\begin{aligned} PA-PB =& d_1\\ PB - PC=& d_2 \\ PC - PA=& -(d_1+d_2) \end{aligned}\right.
注意:(1) d_1,d_2均可以是负数;(2) 以上三个方程实际上等价为两个方程,因为任意一个方程均可以由另外两个导出。
设P坐标为(x,y,z),A,B,C坐标分别为(a_1,b_1,c_1),(a_2,b_2,c_2),(a_3,b_3,c_3),则以上问题转化为:
\left\{ \begin{aligned} & \sqrt{(x-a_1)^2+(y-b_1)^2+(z-c_1)^2} - \sqrt{(x-a_2)^2+(y-b_2)^2+(z-c_2)^2} = d_1 \\ & \sqrt{(x-a_2)^2+(y-b_2)^2+(z-c_2)^2} - \sqrt{(x-a_3)^2+(y-b_3)^2+(z-c_3)^2} = d_2 \end{aligned} \right.
注意:以上方程包含三个未知数,而只有两个方程,因此该方程并不只有唯一解。
需求分析
- 可视化描述目标点到锚点距离差值一定的轨迹方程
- 计算出目标点的轨迹(数值解或解析解)
解决思路一
Mathematica提供了
如图所示,三种颜色的曲面表示分别表示到两锚点距离差一定的轨迹,其中蓝色曲线即为三个曲面的交线。(橙色曲线为对称的交线)
Solve
函数可以用于求解以上方程,但计算结果极为冗长,几乎无法拷贝至其他软件中实现。并且在Mathematica中改变参数进行计算时计算效率也很低,同时存在“除零”的情况。该方法可以用于Demo,但几乎不具备实用性。Demo效果图如图所示。如图所示,三种颜色的曲面表示分别表示到两锚点距离差一定的轨迹,其中蓝色曲线即为三个曲面的交线。(橙色曲线为对称的交线)
解决思路二
1. 设三锚点为A, B, C, 以A, B, C形成的平面为XOY平面,且以\overrightarrow{AB}为x轴正方向,AB的中点为原点,中垂线为y轴正方向;
2. 根据锚点间距离,确定参数c(两锚点间距离为2c);
3. 根据动点到两锚点间距离差, 确定参数a(距离差为2a);
4. 相应地确定参数b = \sqrt{c^2 - a^2};
5. 确定两锚点方向相对于x轴正方向的旋转角度与平移量;
6. 根据2 \sim 4确定相应双叶双曲面的标准方程,然后根据5中确定的旋转角度与平移量确定旋转平移后的双叶双曲面方程;
7. 固定z_0,即选定平面Z=z_0,代入双曲面方程,确定双曲面与该平面的交线(为双曲线)方程;
8. 求两双曲线方程的交点坐标(将x(y)代入,转化为关于y的一元四次方程[3, 4]);
9. 利用一元四次方程的求根公式计算出求出y的解,带回原方程验证,确定最终解即为两双曲面在平面Z=z_0上的交点坐标;
10. 遍历z_0, 重复步骤7 \sim 9。
2. 根据锚点间距离,确定参数c(两锚点间距离为2c);
3. 根据动点到两锚点间距离差, 确定参数a(距离差为2a);
4. 相应地确定参数b = \sqrt{c^2 - a^2};
5. 确定两锚点方向相对于x轴正方向的旋转角度与平移量;
6. 根据2 \sim 4确定相应双叶双曲面的标准方程,然后根据5中确定的旋转角度与平移量确定旋转平移后的双叶双曲面方程;
7. 固定z_0,即选定平面Z=z_0,代入双曲面方程,确定双曲面与该平面的交线(为双曲线)方程;
8. 求两双曲线方程的交点坐标(将x(y)代入,转化为关于y的一元四次方程[3, 4]);
9. 利用一元四次方程的求根公式计算出求出y的解,带回原方程验证,确定最终解即为两双曲面在平面Z=z_0上的交点坐标;
10. 遍历z_0, 重复步骤7 \sim 9。
思路二中的关键步骤
坐标转换顺序
按照以上解决思路中给出的顺序,其中涉及到的坐标转换顺序如图所示。
![]() |
坐标转换顺序 |
平面旋转变换
由前面的分析可以知道,三锚点位于XOY平面, 那么相应的形成的双叶双曲面的分割面均垂直于XOY平面。因此旋转变换仅限于平面XOY中,对z方向不涉及旋转变换。下面介绍平面旋转变换。
子问题
平面(空间)中到两定点距离差固定的动点轨迹为双曲线(双曲面)
证明:假设两定点间的举例为2c,而动点到两定点的举例差为2a(根据三角形两边之差小于第三边,可知:当2a>2c时, 是不存在的;而当2a=2c时,动点只可能位于两定点中的任意一个;以下的讨论均假定2c>2a)
为了便于讨论,假设两个定点(焦点)的坐标分别位于(-c, 0)和(c, 0)。设动点坐标为(x, y), 则已知: \left| \sqrt{(x-c)^2 + y^2} - \sqrt{(x+c)^2 + y^2}\right| = 2a确定(x, y)的轨迹方程。
因为\sqrt{(x-c)^2 + y^2} - \sqrt{(x+c)^2 + y^2} = \pm 2a,移项可得
\sqrt{(x-c)^2 + y^2} = \pm 2a + \sqrt{(x+c)^2 + y^2}
因为\sqrt{(x-c)^2 + y^2} - \sqrt{(x+c)^2 + y^2} = \pm 2a,移项可得
\sqrt{(x-c)^2 + y^2} = \pm 2a + \sqrt{(x+c)^2 + y^2}
两边平方可得
(x-c)^2 + y^2 = 4a^2 + (x+c)^2 + y^2 \pm 4a \sqrt{(x+c)^2 + y^2}
化简可得
-4cx - 4a^2= \pm 4a \sqrt{(x+c)^2 + y^2}
即
-cx - a^2= \pm a \sqrt{(x+c)^2 + y^2}
两边平方
(cx + a^2)^2= a^2 \left[(x+c)^2 + y^2\right]
化简可得
x^2(c^2 - a^2) - a^2 y^2 = a^2 (c^2 - a^2)
另b^2 = c^2 - a^2,可得
x^2 b^2 - a^2 y^2 = a^2 b^2
两边同时除以a^2 b^2,即可得到双曲线的标准方程:
\frac{x^2}{a^2} - \frac{y^2}{b^2} = 1
将以上的问题推广到空间中是类似的,假设焦点坐标位于(-c, 0, 0)与(c, 0, 0),动点坐标为(x, y, z),则动点满足如下关系:
\left| \sqrt{(x-c)^2 + y^2 + z^2} - \sqrt{(x+c)^2 + y^2 + z^2}\right| = 2a
经过与上述类似的变换(将其中的y^2替换为y^2+z^2即可)可以得到如下方程:
\frac{x^2}{a^2} - \frac{y^2+z^2}{b^2} = 1
该方程为双叶双曲线的标准方程(焦点位于x轴),以下给出一个示例。
该方程为双叶双曲线的标准方程(焦点位于x轴),以下给出一个示例。
![]() |
双叶双曲面:x^2-y^2-z^2=1 |
平面与双叶双曲面所形成的交线为双曲线?
如图,给出一个双叶双曲面的切割demo。
图中分别给出了一个双叶双曲面和三个平面,其中:红色和绿色的平面是双叶双曲面的“渐进平面”即在XOY平面上的投影对应为该双叶双曲线在XOY平面投影(双曲线)的渐近线。而蓝色平面为切割平面,为了便于观察,绘制蓝色平面与双曲面的交线如下图所示。
从图中可以看出,蓝色交线为双曲线,下面给出证明以及给出该交线的方程。
首先这一结论是有前提条件的,考虑的“切割”平面是垂直于XOY平面的(对于焦点坐标在X轴上时,即标准方程为\frac{x^2}{a^2} - \frac{y^2+z^2}{b^2} = 1)
证明:切割平面在本例中垂直于XOY平面,平面方程可以表述为:y = kx+m其中“斜率k”的范围在上述“渐进平面”对应的“渐近线”的斜率范围内,即有:|k| < \frac{b}{a}
将平面方程y=kx+m代入双曲面标准方程\frac{x^2}{a^2} - \frac{y^2+z^2}{b^2} = 1,可得:
\left(\frac{1}{a^2} - \frac{k^2}{b^2}\right)x^2 - \frac{2km}{b^2}x + \frac{m^2}{b^2} = 1 + \frac{z^2}{b^2}
进一步整理可得:
\left(\frac{1}{a^2} - \frac{k^2}{b^2}\right)\left(x - \frac{a^2 km}{b^2 - a^2 k^2}\right)^2 - \frac{z^2}{b^2} = 1 + \frac{m^2}{b^2 - a^2 k^2}
注意到:|k| < \frac{b}{a},故:b^2 - a^2k^2 > 0,从而上式中\left(\frac{1}{a^2} - \frac{k^2}{b^2}\right)>0,等式右侧1 + \frac{m^2}{b^2 - a^2 k^2} > 1,故:上式可以写为:
\frac{(x-m')^2}{(a')^2} - \frac{z^2}{(b')^2} = 1
其中:m' = \frac{a^2 km}{b^2 - a^2 k^2}, a' = \sqrt{\frac{a^2 b^2}{b^2-a^2 k^2}\left(1+\frac{m^2}{b^2-a^2k^2}\right)},b' = \sqrt{b^2 \left(1 + \frac{m^2}{b^2 - a^2 k^2}\right)}
同时还需要满足y=kx+m。
示例:以x^2 - y^2 - z^2 = 1被平面x+2y=0切割为例,可以绘制出解如下
图中绿色曲面即为\frac{(x-m')^2}{(a')^2} - \frac{z^2}{(b')^2} = 1表示的曲面。
![]() |
Demo:双叶双曲面“切割” |
![]() |
双叶双曲面切割平面及其交线 |
首先这一结论是有前提条件的,考虑的“切割”平面是垂直于XOY平面的(对于焦点坐标在X轴上时,即标准方程为\frac{x^2}{a^2} - \frac{y^2+z^2}{b^2} = 1)
证明:切割平面在本例中垂直于XOY平面,平面方程可以表述为:y = kx+m其中“斜率k”的范围在上述“渐进平面”对应的“渐近线”的斜率范围内,即有:|k| < \frac{b}{a}
将平面方程y=kx+m代入双曲面标准方程\frac{x^2}{a^2} - \frac{y^2+z^2}{b^2} = 1,可得:
\left(\frac{1}{a^2} - \frac{k^2}{b^2}\right)x^2 - \frac{2km}{b^2}x + \frac{m^2}{b^2} = 1 + \frac{z^2}{b^2}
进一步整理可得:
\left(\frac{1}{a^2} - \frac{k^2}{b^2}\right)\left(x - \frac{a^2 km}{b^2 - a^2 k^2}\right)^2 - \frac{z^2}{b^2} = 1 + \frac{m^2}{b^2 - a^2 k^2}
注意到:|k| < \frac{b}{a},故:b^2 - a^2k^2 > 0,从而上式中\left(\frac{1}{a^2} - \frac{k^2}{b^2}\right)>0,等式右侧1 + \frac{m^2}{b^2 - a^2 k^2} > 1,故:上式可以写为:
\frac{(x-m')^2}{(a')^2} - \frac{z^2}{(b')^2} = 1
其中:m' = \frac{a^2 km}{b^2 - a^2 k^2}, a' = \sqrt{\frac{a^2 b^2}{b^2-a^2 k^2}\left(1+\frac{m^2}{b^2-a^2k^2}\right)},b' = \sqrt{b^2 \left(1 + \frac{m^2}{b^2 - a^2 k^2}\right)}
同时还需要满足y=kx+m。
示例:以x^2 - y^2 - z^2 = 1被平面x+2y=0切割为例,可以绘制出解如下
图中绿色曲面即为\frac{(x-m')^2}{(a')^2} - \frac{z^2}{(b')^2} = 1表示的曲面。
参考
4. 维基百科 - 四次方程