用圆弧和矩形的坐标生成两个CRgn,然后CombineRgn,看交集的区域是否为空

解决方案 »

  1.   

    我也判断过的,不过你圆弧在平面上,我的考虑的圆弧在空间球上,但是原理一样拉1. 先判断圆与矩形交点
    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
      

  2.   

    如果确定圆弧与矩形没有交点,那么,拿圆弧上一个点判断是否在矩形内,在矩形内就是整个圆弧在矩形内了BTW: 光确定起点,终点和圆弧圆心坐标,圆弧没有唯一确定
      

  3.   

    模糊判断: 判断圆心的距离与矩形中心的距离精确判断: 求出两图形的方程, 求交. 
             判断点是否在圆上可以这样,定义一个正方向, 弧线的起始角度, 终止角度都转换为相对与方向,在求出点相对与此正方向的角度, 一比较就很明白了. 求角度, 知道 点的x,y坐标, 用一下acos() 就可以求出