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

C#,逐点计算位置和其他点的距离值,c#,math,geometry,C#,Math,Geometry,我有一个带有以下值的struct: struct Point { public float x; public float y; } 我有三个结构变量,分别是point1,point2和point3 我需要计算点4的位置,我仅有的是点4与这些点之间的距离 是否可以仅通过其他三个具有距离的点的位置来计算点的位置?当然可能。这是简单的几何学 取点P1。距离d的某个地方是P4 在2D中,什么样的几何形状定义了与另一点在给定距离处的所有点?是的,一个圆圈。让我们画一个以P1为中心的圆,

我有一个带有以下值的
struct

struct Point {
    public float x;
    public float y;
}
我有三个结构变量,分别是
point1
point2
point3

我需要计算
点4
的位置,我仅有的是
点4
与这些点之间的距离


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

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

  • 取点
    P1
    。距离
    d
    的某个地方是
    P4

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

  • 现在取
    P2
    并以适当的距离进行同样的操作。现在,会发生什么?那么有两种可能:

    • 围绕
      P1
      P2
      的圆圈不相交:问题没有解决方案,您已经完成了

    • 围绕
      P1
      P2
      的圆有一个(相切)或两个交点

  • 现在取第三个点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) { ... }
    }
    
    类点
    {
    公共双X{get;}
    公共双Y{get;}
    ...
    }
    班级圈子
    {
    公共点中心{get;}
    公共双半径{get;}
    ....
    公共静态IEnumerable intersect(第一圈,第二圈){…}
    }
    
    当你编写了一些代码并偶然发现了无法计数的可能性时,你可以在这里发布另一个问题,请求帮助解决你可能遇到的更精确定义的问题。没有人会为你的(家庭)工作编写代码


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

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

  • 取点
    P1
    。距离
    d
    的某个地方是
    P4

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

  • 现在取
    P2
    并以适当的距离进行同样的操作。现在,会发生什么?那么有两种可能:

    • 围绕
      P1
      P2
      的圆圈不相交:问题没有解决方案,您已经完成了

    • 围绕
      P1
      P2
      的圆有一个(相切)或两个交点

  • 现在取第三个点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) { ... }
    }
    
    类点
    {
    公共双X{get;}
    公共双Y{get;}
    ...
    }
    班级圈子
    {
    公共点中心{get;}
    公共双半径{get;}
    ....
    公共静态IEnumerable intersect(第一圈,第二圈){…}
    }
    
    当你编写了一些代码并偶然发现了无法计数的可能性时,你可以在这里发布另一个问题,请求帮助解决你可能遇到的更精确定义的问题。没有人会为你的(家庭)工作编写代码


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

    这听起来像是家庭作业?这个答案可能会帮助你进行计算:看这里:这听起来像家庭作业?这个答案可能会帮你进行计算:看这里: