gpt4 book ai didi

matlab - 计算与Matlab中三个特定点距离相等的点

转载 作者:太空宇宙 更新时间:2023-11-03 20:20:13 24 4
gpt4 key购买 nike

我有这个简单的数据集:

Class1 = [1 0; 0.5 1; 0.5 1.5];

如何在二维空间中找到与数据集所有三个点的欧氏距离相等的点?<​​/p>

enter image description here

以橙色突出显示的点应该大致就是计算点所在的位置。

最佳答案

如果您想找到与所有 3 个点距离相同的点(这是我根据您在评论中的提示得出的结论),您实际上是在寻找包含所有三个点的圆心。请注意,有 1 个或 0 个这样的圆,具体取决于您的三个点是否共线(即它们是否对齐在一条线上)。

最简单的选择是观察圆的两条半径,并观察它们的交点。如果你想象一下你知道圆,你可以很容易地看到你的任何两个点定义了你的圆的割线,所以这些割线的垂直平分线将在圆心相交。如果这些点在一条线上对齐,则所有这些平分线都将平行,即它们不会有交点(这是有道理的:一条线是一个半径无限大的圆)。

因此,您需要查看点的垂直平分线的方程式,p1 = [x1,y1]p2 = [x2,y2]p3 = [x3,y3]。前两点定义的第一个垂直平分线穿过q1 = (p1+p2)/2,并且垂直于n1 = p1-p2,所以它的方向向量是 v1 = [y1-y2,x2-x1]。现在您需要对另一对点执行相同的操作:

q2 = (p1+p3)/2;
v2 = [y1-y3,x3-x1];

然后你的两个垂直平分线的点定义为

q1 + t1*v1
q2 + t2*v2

分别用t1,t2实参数。您需要做的是求解 t1t2,使两条线在 O = [ox,oy] 中相交:

q1 + t1*v1 = q2 + t2*v2
t1*v1 - t2*v2 = q2 - q1

后者是一个二维向量方程:两个参数 t1t2 的两个非齐次线性方程。如果您以通常的方式解决它,解决方案的任一组件 [tsol1; tsol2] 将为您提供原点坐标:

O = q1 + tsol1*v1 == q2 + tsol2*v2

当两个平分线平行且不经过同一点(即,您的三个点沿一条直线对齐)时,线性方程将无解。当两个平分线重合时(即如果你的两个点重合),线性方程将是微不足道的并且有无限多个解。

在非退化的情况下,方程应该有一个唯一的解决方案,您可以从中推导出圆心。

关于matlab - 计算与Matlab中三个特定点距离相等的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40076088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com