c#,通过其他点的位置和距离值计算点的位置
本文关键字:位置 距离 计算 其他 | 更新日期: 2023-09-27 18:04:00
我有一个struct
与这些值:
struct Point {
public float x;
public float y;
}
我有这个结构的三个变量point1
, point2
和point3
。
我需要计算point4
的位置,我唯一知道的是point4
到这些点的距离。
是否有可能仅通过其他三个点的位置与距离来计算点的位置?
当然有可能。这是简单的几何。
-
取
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) { ... }
}
当你编写了一些代码并偶然发现了无法克服的困难时,你可以在这里发布另一个问题,请求帮助解决你可能遇到的更精确定义的问题。没有人会为你编写你的(家庭)工作。
我确实注意到这个解决方案在数学上不是微不足道的,但是如果你不能从一开始就解决这个数学问题,那么你就没有必要尝试编写一个解决方案