C# - 数学/逻辑 - 检查哪个值更接近

C# - Math / Logic - Checking which Value is nearer

我知道这看起来像很多文字,但您解决它可能真的很有趣 :)? 将其视为一道简单数学题。

我对以下逻辑感到困惑,我脑子里有它,想开始编码,但我不知道如何以及从哪里开始。我有一个基本的想法,我会尝试尽可能简单地解释整个事情,但我需要一些关于如何编码的帮助。也许有人可以告诉我如何编码或给我一个改进的想法?

首先我一共有8个双打作为我程序中的坐标。

其中 2 个是我想测试的静态“主坐标”。例如:

double xmain = 110.0
double ymain = 120.0

我还有 2 个输入双坐标,它们会根据您键入的内容动态变化。例如:

double x = 80.0
double y = 90.0

现在我想比较 double x 和 double xmain,看看 x 和 xmain 有多接近,y 和 ymain 也一样。

为此我可以做这样的事情:

double percentx = (x / xmain) * 100.0; // x is ~72% of xmain
double percenty = (y / ymain) * 100.0; // y is ~75% of ymain

但您也必须假设 x 值可以为负值或高于 xmain,所以这样做不是一个好主意,因为我得到的结果是 140% 或 -50%。那么我可以尝试另一种方法吗?

我想做的第二件事是在比较这两个与 xmain 和 ymain 的接近程度之后比较 x 和 y 是否比以下双打更接近 xmain 和 ymain:

double nearestx = 85.0
double nearesty = 75.0

如果x和y之和比nearestx和nearest y更接近xmain并且x更接近ymain,那么x和y应该用自己的值覆盖nearestx和nearest y的值。

我使用之前的 %calculation 进行了类似的尝试,我不应该将其用于该示例,但只是为了向您展示我实际上尝试过的是我的尝试:

combinedpercent = (percentx + percenty) / 2.0; //percent of new xy
nearestpercent = ((nearestx / xmain) * 100.0) + ((nearesty / xmain) * 100.0)) / 4.0; //percent of nearest xy

if (combinedpercent > nearestpercent) //if new xy is higher than nearest xy in percentage terms then true (you probably can code that better)
{
      nearestx = x;
      nearesty = y;
}

我知道这种方法可能很糟糕,如果有人可以指出一种不同的方法来比较哪个值比另一个值更接近的结果(我需要同时使用多个值)而不是,那就太好了使用百分比?

简而言之,我编写了一个“bruteforce”坐标系,它有 2 个固定的 x(main) 和 y(main) 坐标。现在我得到了更多随机的 x 和 y 坐标作为输入,应该与之前的坐标进行比较,依此类推...我 运行 整个过程几分钟以获得最接近输入坐标的输出.

感谢大家的帮助:)

你不会计算两点之间的距离吗?

Math.Sqrt((xMain - x) * (xMain - x) + (yMain - y) * (yMain - y));