《第一个度数是以上图片中A度数是20度》,〈还有和二个度数是,10度》,
这两个度数的A,B坐标,都是相同,只有C坐标不一样,
两个度数都是365度中,随机一个度数,但是计算的时候,两个度数,一定不会改变,
现在求的是,第二个度数的左右25度范围内,有没有第一个度数在其中
getCheckFanWei(20,22);
getCheckFanWei(20,363);
getCheckFanWei(20,10);
getCheckFanWei(360,10);
getCheckFanWei(362,22);
getCheckFanWei(363,15);
getCheckFanWei(90,15);
getCheckFanWei(188,190);void getCheckFanWei(int Di1GeDuShu,int Di2GeDuShu)
{
if((Di2GeDuShu+25)<Di1GeDuShu&& (Di2GeDuShu-25)>Di1GeDuShu)
{
AfxMessageBox(_T("在指定坐标范围内"));
return;
}
}如果以上代码,这样写的话,只能在340度到25之外的,可以正确找到,但是,之内的度数就不好计算了
应该要怎么计算才行呢?

解决方案 »

  1.   

    其实很简单了:
    假设第一个度数为d1,第二个度数为d2。
    那么d2右25度dr = d2+25;
    d2左25度dl = d2-25;
    这里要加一个0-360处理,保证dr和dl都在360内
    if(dl < 0)
      dl += 360;
    if(dr > 360)
      dr -= 360;
    显然,到这里时,只有两种情况,就是dl > dr或者dl < dr
    正常情况,应该dl < dr,毕竟一个加25,一个减25.此时只需要 dl < d1 < dr就满足判断条件了。
    对于dl > dr的情况,其实只需要将这个区间分成两部分,也就是 (dl,360),(0,dr)即可。
    然后只需要 dl < d1 < 360 或者 0 < dl < dr,就可以满足判断条件了。
      

  2.   

    dr = d2+25;
    dl = d2-25;
    if(dl < 0)
      dl += 360;
    if(dr > 360)
      dr -= 360;
    -----------------------------
    那这种情况下,最后,判断d1在d2范围内的代码应该怎么写呢?
          if(d1<dl && d1>dr)
            {
    AfxMessageBox(_T("在指定坐标范围内"));
    return;
            }
    ----------------------------
    这样判断是,只有正常数的时候才有效,可是现在是340到15之间,d1=7度,这样的时候,
    用度数很难判断呀,应该怎么判断呢?
      

  3.   

    你倒是仔细看我的回复了没有啊???
    我不是说了后面要分两种情况吗?
    如果dl = 340, dr = 15
    那么这时候,dl > dr,此时判断需要按两个区间进行,即,dl<d1<360;或者0<d1<dr
    if(d1<=360 && d1>dl) || (d1>=0 && d1<dr))
     AfxMessageBox("在指定坐标范围内");