c#,通过其他点的位置和距离值计算点的位置

本文关键字:位置 距离 计算 其他 | 更新日期: 2023-09-27 18:04:00

我有一个struct与这些值:

struct Point {
    public float x;
    public float y;
}

我有这个结构的三个变量point1, point2point3

我需要计算point4的位置,我唯一知道的是point4到这些点的距离。

是否有可能仅通过其他三个点的位置与距离来计算点的位置?

c#,通过其他点的位置和距离值计算点的位置

当然有可能。这是简单的几何。

  1. P1点。在距离d的某处是P4

    在2D中什么几何形状定义了与另一个点在给定距离上的所有点?是的,一个圆。让我们画一个以P1为圆心的圆,半径等于P1P4之间的距离

  2. 现在取P2,对适当的距离做同样的操作。现在,会发生什么?有两种可能:

    • P1P2周围的圆圈不相交:这个问题没有解,你已经完成了

    • P1P2周围的圆有一个(相切)或两个交点

  3. 现在取第三个点P3,再画一个半径合适的圆。有两件事可能再次发生:

    • 新圆与先前绘制的圆在先前确定的交点之一相交;你找到了你的解,这三个圆的公共交点是P4
    • 新圆不与先前绘制的圆在先前确定的任何交点相交;

现在解决代码的算法很清楚了,你"只"需要实现它。考虑创建表示点和圆的类型以及与圆相交的方法:

class Point
{
    public double X { get; }
    public double Y { get; }
    ...
}
class Circle
{
    public Point Center { get; }
    public double Radius { get; }
    ....
    public static IEnumerable<Point> Interstect(Circle first, Circle second) { ... }
}

当你编写了一些代码并偶然发现了无法克服的困难时,你可以在这里发布另一个问题,请求帮助解决你可能遇到的更精确定义的问题。没有人会为你编写你的(家庭)工作。

我确实注意到这个解决方案在数学上不是微不足道的,但是如果你不能从一开始就解决这个数学问题,那么你就没有必要尝试编写一个解决方案