【问题标题】:C#, calculate position of point by position and distance values of other points [closed]C#,通过其他点的位置和距离值计算点的位置[关闭]
【发布时间】:2016-08-25 19:10:49
【问题描述】:

我有一个 struct 具有这些值:

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

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

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

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

【问题讨论】:

标签: c# math geometry


【解决方案1】:

当然可以。这是简单的几何图形。

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

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

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

【讨论】:

    猜你喜欢
    • 2013-09-28
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多