【问题标题】:Graphics Question: How do I restrict the mouse cursor to within a circle?图形问题:如何将鼠标光标限制在一个圆圈内?
【发布时间】:2010-05-17 21:24:15
【问题描述】:

我在玩 XNA。当我单击鼠标左键时,我记录了 X、Y 坐标。按住鼠标按钮,移动鼠标会从该原点画一条线到当前鼠标位置。我已将其偏移到窗口的中间。

现在,我想做的是将鼠标光标限制在一个圆圈内(半径为 N,以屏幕中间为中心)。将鼠标限制在矩形区域很容易(通过鼠标位置和区域大小的差异来调整原点),但我不知道如何开始对圆形区域进行操作。

谁能解释一下如何做到这一点?任何关于从哪里开始的建议都会有所帮助。

【问题讨论】:

    标签: graphics geometry xna


    【解决方案1】:

    我不知道如何使用 XNA...所以不能给你具体的代码,但想法很简单。

    只需用毕达哥拉定理检查当前鼠标位置与原点之间的距离:

    dist = sqrt((current_y - orig_y)^2 + (current_x - orig_x)^2)

    然后检查dist是否为

    【讨论】:

    • 太棒了!我对这两个答案都投了赞成票,但我选择了 Tom's,因为它解释了如果 dist > radius 该怎么办。然而,这个答案是有道理的,因为我“得到”了毕达哥拉斯(只是)。
    【解决方案2】:

    每次鼠标移动时,您都需要将其限制在当前位置和圆上最近点之间的矩形内。

    圆上最近的点是通过

    设 (x,y) 为鼠标所在位置,(x0,y0) 为原点

    (x0-x, y0-y) 是从原点到指针的向量

    d=sqrt((x0-x)2+(y0-y)2 ) 是该向量的长度

    (N*(x0-x)/d, N*(y0-y)/d) 是距离原点 N 处的点沿着将原点连接到鼠标位置的线 - 即圆上离鼠标指针最近的点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多