C#,计算其他点的位置和距离值的位置

时间:2016-08-25 10:30:33

标签: c# math geometry

我有struct这些值:

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

我有这个结构的三个变量point1point2point3

我需要计算point4的位置,而我所拥有的只是point4与这些点的距离。

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

1 个答案:

答案 0 :(得分:4)

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

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

    2D中的几何形状定义了距离另一个点给定距离的所有点?是的,一个圆圈。让我们绘制一个以P1为中心的圆,其半径等于P1P4之间的距离。

  2. 现在选择P2并对适当的距离做同样的事情。现在,会发生什么?嗯,有两种可能性:

    • P1P2周围的圈子不相交:问题无法解决,您已完成。

    • P1P2周围的圈子有一个(相切)或两个交叉点。

  3. 现在取第三个点P3并再次绘制一个适当半径的圆圈。有两件事可能再次发生:

    • 新圆圈与之前确定的交叉点之一中的先前绘制圆相交;您找到了解决方案,所有三个圈子的公共交叉点为P4
    • 在预先确定的任何交叉点中,新圆圈与先前绘制的圆圈不相交;问题没有解决办法。
  4. 现在解决代码的算法很明确,你只需要实现它。考虑创建表示点和圆的类型以及与圆相交的方法:

    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) { ... }
    }
    

    如果您编写了某些内容并偶然发现了难以逾越的赔率,您可以在此处发布另一个问题,寻求帮助解决您可能遇到的更精确定义的问题。没有人会为你编写你的(家庭)工作代码。

    我注意到解决方案在数学上并不是微不足道的,但是如果你不能解决数学问题,那么你就没有尝试编写解决方案的业务。