我知道这看起来像很多文本,但它可能是真正的乐趣为您解决它:)?认为这是一个简单数学问题。
我挣扎于我的以下逻辑,我有它在我的头脑中,想要开始编码,但我不知道如何和从哪里开始。我有一个基本的想法,我会尽量解释整个事情尽可能简单,但我需要一点帮助,如何编码它。也许有人可以告诉我如何编码或给我一个改进的想法?
首先,我总共有8个双精度数作为我程序中的坐标。
其中2个为静态"主坐标"。我想测试一下。例如:
double xmain = 110.0
double ymain = 120.0
我还有2个输入双坐标,根据你输入的内容动态变化。例如:
double x = 80.0
double y = 90.0
现在我想比较双精度x和双精度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比nearestx和nearest y更接近ymain,那么x和y应该用它们自己的值覆盖nearestx和nearest y的值。
我尝试了一些类似的东西使用之前的%计算我不应该在这个例子中使用但是只是向你展示我实际上尝试了一些东西这里是我的try:
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"程序。坐标系统有两个固定的给定x(主)和y(主)坐标。现在我得到了更多随机的x和y坐标作为输入,它们应该与之前的坐标进行比较……我将整个过程运行了几分钟,以获得最接近输入坐标的输出。谢谢大家的帮助:)
你不能计算两点之间的距离吗?
Math.Sqrt((xMain - x) * (xMain - x) + (yMain - y) * (yMain - y));