用圆弧和矩形的坐标生成两个CRgn,然后CombineRgn,看交集的区域是否为空
解决方案 »
- Win7跟XP系统,对话框大小问题
- WinIo.vxd 驱动在机器上是安装成功了,但是模拟按键非常不稳定,跪求驱动高手解围,非常紧急
- 关于p2p udp nat穿透的问题
- windows数据类型中的LPCTSTR和LPCSTR有什么区别?
- 怎么从一个字符串开始读文件??
- 如何从一文档摸板对应的多个文档对象中找到自己所需的那个啊?
- ActiveX控件在属性页中的显示问题
- 如果将"Hello,World"这样的程序写成*.dll的话需要注意什么?又该怎么写为好!
- 超级白痴问题,等于送分题,关于在VC6.0 or VC7.0中的自动补充问题
- 电脑报2001合订本电子版免费下载!!
- gif动画复制到剪切板,可粘贴到QQ,高手请指点,必有重礼回报。
- 怎样监控 TV BABY2开始运行?
2. 如果没有交点,利用圆弧上一个点,判断包含关系: 圆弧被包含,或分离,over
3. 如果有交点,判断交点是否在圆弧上
4. 如果交点不在圆弧上,利用圆弧上一个点,判断包含关系: 圆弧被包含,或分离
5. 如果交点在圆弧上,相交1,2,4,5都好办,因此关键就是判断圆上一个点是否在指定圆弧上,下面大致说下方法。
假设圆弧起点p1,经过p2,达到终点p3,圆心为p0,问题就是如果p是圆上的点,如何判断p是否属于圆弧。
设下面* 为叉积 angle(a,b)表示两个向量夹角
step 1.先求得起点p1处一个切向d,于是从p1沿d到p3确定一圆弧,p1沿-d到p3确定另一圆弧,p2在其中一个圆弧上,d可以如下求得
圆弧所在平面的法向 n = p1p0*p1p3
圆弧起点处的一个切向:d = p1p0*n
step 2. 于是我们的目的是判断,p是不是和p2处在同样的圆弧段上
假设alpha = angle(p1p3,d),那么p与p2在同一圆弧,当且仅当
angle(p1p2,d) > alpha ; angle(p1p,d) > alpha
或者
angle(p1p2,d) < alpha ; angle(p1p,d) < alpha
判断点是否在圆上可以这样,定义一个正方向, 弧线的起始角度, 终止角度都转换为相对与方向,在求出点相对与此正方向的角度, 一比较就很明白了. 求角度, 知道 点的x,y坐标, 用一下acos() 就可以求出