• 7593阅读
  • 3回复

Qt如何判断一个点在一个扇形区域? [复制链接]

上一主题 下一主题
离线zsmdev
 
只看楼主 倒序阅读 楼主  发表于: 2011-10-14
Qt如何判断一个点在一个扇形区域?
离线zsmdev
只看该作者 1楼 发表于: 2011-10-14
关键是扇形区域怎么表示?
矩形有QRect,圆形和扇形呢?
离线jorneyr

只看该作者 2楼 发表于: 2011-10-14
1. 忘形可以使用QPainterPath来生成,然后使用bool QPainterPath::contains ( const QPointF & point ) const来判断一下就可以了。

2. 使用圆,扇形,还有弧的特性来计算即可:
    a. 判断此点是否在圆内,如在,继续下面
    b. 求一线段 lineA,一个端点是圆心,lineA 经过此点,另一个端点在圆外 (使用直线的方程式不难算出)
    c. 扇形的端两点相连接得一线段 lineB
    d. 如果lineA 与 lineB 相交,则此点在扇形内,否则在扇形外
    d. 判断
离线zsmdev
只看该作者 3楼 发表于: 2011-10-14
引用第2楼jorneyr于2011-10-14 13:58发表的  :
1. 忘形可以使用QPainterPath来生成,然后使用bool QPainterPath::contains ( const QPointF & point ) const来判断一下就可以了。
2. 使用圆,扇形,还有弧的特性来计算即可:
    a. 判断此点是否在圆内,如在,继续下面
    b. 求一线段 lineA,一个端点是圆心,lineA 经过此点,另一个端点在圆外 (使用直线的方程式不难算出)
.......



多谢!
但是我测试出来的效果不好,明明在圆形内,但是却返回false,回头我再调调。
快速回复
限100 字节
 
上一个 下一个