素材牛VIP会员
求解决,已知三点坐标,到三点的距离比例,求未知点坐标
 sh***ao  分类:PHP代码  人气:1376  回帖:5  发布于6年前 收藏

求教各位大神一个数学算法
已知三点坐标p1(x0,y0),p2(x1,y1)p3(x2,y2).未知点M(x,y)到三点的比例d1,d2,d3,求未知点坐标
备注:1.M未必在p1,p2,p3 所组成三角形内 能否有一个固定解公式,实在不行准备去学校蹲点去

讨论这个帖子(5)垃圾回帖将一律封号处理……

Lv2 入门
蒙***生 职业无 6年前#1

$$\frac{(x - x_0)^2 + (y - y_0)^2} {(x - x_1)^2 + (y - y_1)^2} = \frac{d_1^2} {d_2^2}$$
$$\frac{(x - x_0)^2 + (y - y_0)^2} {(x - x_2)^2 + (y - y_2)^2} = \frac{d_1^2} {d_3^2}$$

题主如果有学校的资源的话,用Matlab来解这个2元2次方程组,可以得到通解。(其实手算也可以,不过展开之后太长了,多年不碰这个,怕算错了)
但要注意,得到的2组解,有一组需要排除掉。(在有解的情况下)

另外通过阿氏圆定理,该题可转化为求两个圆的交点,也是2元2次方程组。
同样的,2个圆的若相交,交点有2个,需要排除掉一个。(在有解的情况下)


补充:求三个圆两两相交的交点
下面方程1、2、3即分别描述了3个圆,将其两两组合为方程组并求解,可得交点(最少0个交点,最多6个交点)
方程1:$$\frac{(x - x_0)^2 + (y - y_0)^2} {(x - x_1)^2 + (y - y_1)^2} = \frac{d_1^2} {d_2^2}$$
方程2:$$\frac{(x - x_0)^2 + (y - y_0)^2} {(x - x_2)^2 + (y - y_2)^2} = \frac{d_1^2} {d_3^2}$$
方程3:$$\frac{(x - x_1)^2 + (y - y_1)^2} {(x - x_2)^2 + (y - y_2)^2} = \frac{d_2^2} {d_3^2}$$
$$\left\{\begin{array}\\方程1\\方程2\end{array}\right.$$
$$\left\{\begin{array}\\方程1\\方程3\end{array}\right.$$
$$\left\{\begin{array}\\方程2\\方程3\end{array}\right.$$

然后,关于结果的判断逻辑,比较复杂,这里先分类设想下,权当抛砖引玉,作为参考。
因为平面中的两个圆,有可能有2个交点、1个交点或0个交点,3种情况。
若交点数为6,且其中没有重合点,两两相交,近似点可能在较近的3点组成的三角形内。
若交点数为6,且其中3点重合,重合点为理想的解。
若交点数为5,有2个圆相切,另一个圆与这两个圆分别相交。近似点有可能在切点与另2点之间。
若交点数为4,有2个圆相交,另一个圆与这两个圆分别相切。近似点可能在2个切点与另一个较近交点组成的三角形内。
若交点数为4,还有一种可能是一个圆与另两个分别相交,且这另两个圆无交点。这情况有点复杂,近似点不明。
若交点数为3,那么3个圆两两相切。近似点可能在这3点组成的三角形内。
若交点数为3,另一种可能是两个圆相交,且另一个圆与其中一个相切。近似点不明。
若交点数为2,可能是2个交点,或者2个切点。近似点不明。
若交点数为1,一个切点,近似点不明。
若交点数为0,3个圆两两相离。近似点不明。
(不敢保证考虑全了,如有疏漏请大家提醒~~)

如果题主的问题只是偶尔求解,那么可以用软件绘出3个圆,比较好判断。
如果是需要用程序自动计算,那么逻辑比较复杂。需要全面考虑各种情况,好好设计一下。


--再次补充--

今天正好看到一些关于超定方程组的知识,发现适用于题主的问题。

超定方程组是指方程个数大于未知量个数的方程组。

超定方程一般是不存在解的矛盾方程。

例如,如果给定的三点不在一条直线上, 我们将无法得到这样一条直线,使得这条直线同时经过给定这三个点。 也就是说给定的条件(限制)过于严格, 导致解不存在。在实验数据处理和曲线拟合问题中,求解超定方程组非常普遍。比较常用的方法是最小二乘法。形象的说,就是在无法完全满足给定的这些条件的情况下,求一个最接近的解。

上面所列的方程1、2和3,包含2个未知数,即是超定方程组。
不过,最小二乘法是求解线性超定方程组的,题主这里是非线性超定方程组。
试试搜索页里的方法,有很多Matlab解法搜索非线性超定方程组的结果

Lv6 码匠
lk***29 CEO 6年前#2

这就是一个解方程问题 根据已知条件列方程组 把x和y用已知条件表示出来 得出来的就是所要的公式了

Lv6 码匠
lo***ou 职业无 6年前#3

二维平面上判断点是否在三角形内

关于求 M 点到个点的比例,那就是求到每一个点距离就行了。

Lv5 码农
Am***ze JS工程师 6年前#4

二元二次方程解呗

Lv6 码匠
素***2 学生 6年前#5

引理

设 $A$, $B$ 为平面上两点,$\lambda > 0, \lambda \neq 1$,满足 $\frac{|AP|}{|BP|}=\lambda$ 的 $P$ 点的轨迹为一个圆(阿波罗尼斯圆);当 $\lambda = 1$ 时,该轨迹退化为一条直线,即 $AB$ 的中垂线。未退化时,该圆以 $CD$ 为直径,其中 $C,D$ 位于直线 $AB$ 上,且满足 $C$ 在线段 $AB$ 上,$D$ 在线段 $AB$ 外,$\frac{|AC|}{|BC|}=\frac{|AD|}{|BD|}=\lambda$。

根据此引理,你先选 $P_1$, $P_2$,得到一条轨迹 $\Gamma_1$;再选择 $P_2$, $P_3$,得到第二条轨迹 $\Gamma_2$。若 $\Gamma_1,\Gamma_2$ 有交点,交点即为所求。

$$$$

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取