【发布时间】:2021-10-06 11:05:38
【问题描述】:
我知道这看起来像很多文本,但你解决它可能真的很有趣:)? 将其视为一个简单数学问题。
我很难理解我的以下逻辑,我脑子里想着它并想开始编码,但我不知道如何以及从哪里开始。我有一个基本的想法,我会尽量简单地解释整个事情,但我需要一个关于如何编码的帮助。也许有人可以告诉我如何编码或给我一个改进的想法?
首先,我总共有 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 之和更接近 xmain 且 x 更接近 ymain 比最接近的 x 和最接近的 y,那么 x 和 y 应该用自己的值覆盖最近的 x 和最接近的 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;
}
我知道这种方法可能很糟糕,如果有人可以指出一种不同的方法来比较结果,哪个值比另一个值更接近(我需要同时使用多个值)而不是使用百分比?
简而言之,我编写了一个“蛮力”坐标系,它有 2 个固定的给定 x(main) 和 y(main) 坐标。现在我得到了更多随机的 x 和 y 坐标作为输入,应该与之前的坐标进行比较,依此类推……我运行整个程序几分钟以获得最接近输入坐标的输出。
感谢大家的帮助:)
【问题讨论】:
-
这些是坐标,因此您可以使用毕达哥拉斯计算点之间的距离:
double dx = xmain - x; double dy = ymain - y; double delta = Math.Sqrt(dx*dx + dy*dy);。然后只需寻找最低的delta。
标签: c# math logic calculation