【问题标题】:Determine if tap is within circular area确定水龙头是否在圆形区域内
【发布时间】:2015-04-10 21:06:05
【问题描述】:

在我的应用中,我目前能够通过检查以下所有条件是否为真来确定用户的点击是否在矩形区域内:

  • 手指 X > 矩形 X
  • 手指 Y > 矩形 Y
  • 手指 X X + 矩形 宽度
  • 手指 Y Y + 矩形 高度

但是,我现在必须确定用户是否在 圆形 区域内点击。目前我在屏幕上有一个圆形,并且只检查它的边界矩形,这可行但显然不是很好。

任何帮助将不胜感激。

【问题讨论】:

    标签: geometry touch area touchscreen ontouch


    【解决方案1】:

    二维的distance between two points定义为

     dist = sqrt((x2-x1)^2 + (y2-y1)^2)
    

    要检查您的点击点是否在一个圆内,请将您的圆心设为 (x1,y1),将“点击位置”设为 (x2,y2),然后检查是否

    sqrt((x2-x1)^2 + (y2-y1)^2) < R
    

    R 是你的圆的半径。

    编辑:

    正如 John 提到的,从计算的角度来看,比较与 R^2 更有趣,以避免每次点击的 sqrt。于是条件变成:

    (x2-x1)^2 + (y2-y1)^2 < R^2
    

    【讨论】:

    • 是的,但是对R 求平方比计算平方根要便宜,所以通常最好执行(x2-x1)^2+(y2-y1)^2) &lt; R^2 的测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 2018-11-14
    • 1970-01-01
    相关资源
    最近更新 更多