《第一个度数是以上图片中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之外的,可以正确找到,但是,之内的度数就不好计算了
应该要怎么计算才行呢?
解决方案 »
- CORLORREF相关问题
- mfc调用word2007,将ListBox中的内容保存到word中
- 关于使用opencv做视频处理的时候遇到的一个问题
- CListCtrl控件闪烁的问题
- 那有xp sdk 可以下载?
- 菜鸟提问--关于编辑框控件的两种成员变量(CEdit控件类型与CString 值类型之间的关联问题)
- Windows 98下的Socket监听服务,怎样能够在服务启动时不弹出黑色窗口??
- 我把按钮贴上自己的图片,我怎么可以把图片中的白色变成透明的?
- 如何用ShellExecute操作我的帮助文档呢?
- 关于左右视图的正确编程
- 有关指针的小问题
- 在MFC中WM_DISPLAYCHANGE的消息响应函数是什么?谢谢!
假设第一个度数为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,就可以满足判断条件了。
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度,这样的时候,
用度数很难判断呀,应该怎么判断呢?
我不是说了后面要分两种情况吗?
如果dl = 340, dr = 15
那么这时候,dl > dr,此时判断需要按两个区间进行,即,dl<d1<360;或者0<d1<dr
if(d1<=360 && d1>dl) || (d1>=0 && d1<dr))
AfxMessageBox("在指定坐标范围内");