微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

确定最短路径的方向

如何解决确定最短路径的方向

首先,这是一道数学题,我不是在寻找与图像处理相关的代码

我有一个罗盘,0 到 360 度。

指针当前指向 0 度。

指针位置不能超过 360 (compassLimits.Max),也不能低于零度 (compassLimits.Min),这些是任何指南针的常规限制。

我想通过最短路径以 1 度的步长将针移到下一个位置。

如果下一个位置(目标)是 10 度,我想将指针移动到 11 度,然后是 12 度,依此类推,直到我到达目标位置。

但是,如果目标位置是 350 度,我想将指针向后移动到 359、358 等。

我可以使用以下 (C#) 算法确定哪条路线最短:

var compassLimits = new
    {
        Max = 360.0,Min = 0.0
    };

var indirect = Math.Abs(compassLimits.Max - targetValue) + Math.Abs(compassLimits.Min - currentValue);
var direct = Math.Abs(targetValue - currentValue);
if (direct < indirect)
{
    shortestdistance = direct;
}
else
{
    shortestdistance = indirect;
}

我现在需要确定针应该向前还是向后移动才能到达目标,而我的大脑今天无法正常工作,所以与其反复尝试和错误尝试,我想我应该把它扔掉。

显然,我不能依赖大于当前值的目标值,因为这对于从 0 度移动到 10 度很有效,但在从 0 度移动到 350 度时就失败了。

上面的 shortestdistance 变量总是一个正值,因为我使用 Math.Abs​​() 来计算它。

那么我如何确定指针应该移动的方向?

解决方法

这取决于直接和间接以及目标值是否大于 currentValue,所以您有两个一半的答案:

string NSEURL = @"https://www.niftyindices.com/";
WebClient webClient = new WebClient();
string nseindicies = webClient.DownloadString(NSEURL); //this is throwing time out error.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。