代码之家  ›  专栏  ›  技术社区  ›  TarkaDaal

图形问题:如何将鼠标光标限制在一个圆内?

  •  2
  • TarkaDaal  · 技术社区  · 14 年前

    我在玩XNA。当我单击鼠标左键时,我会记录x,y坐标。按住鼠标按钮,移动鼠标从原点到当前鼠标位置绘制一条线。我把这个偏移到窗口的中间。

    现在,我要做的是将鼠标光标限制在一个圆内(半径为n,在屏幕中间居中)。将鼠标限制在矩形区域非常简单(通过调整鼠标位置和区域大小的差异来调整原点),但是对于圆形区域,我还不知道如何开始这样做。

    有人能解释一下怎么做吗?任何关于从哪里开始的建议都是有帮助的。

    2 回复  |  直到 14 年前
        1
  •  6
  •   BlueRaja - Danny Pflughoeft    14 年前

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

    圆上最近的点是通过

    设(x,y)为鼠标所在位置,(x) Y 原产地

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

    D=SqRT(x) -X) +(Y) -Y) )是向量的长度

    (n*(x) -x)/d,n*(y) -y)/d)是从原点沿连接原点到鼠标位置的直线距离n处的点,也就是说,圆上最接近鼠标指针的点。

        2
  •  7
  •   nico    14 年前

    我对如何使用XNA一无所知…所以不能给你特定的代码,但是这个想法很简单。

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

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

    然后检查距离是否为半径