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

时间:2010-05-17 21:24:15

标签: graphics geometry xna

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

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

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

2 个答案:

答案 0 :(得分:7)

我对如何使用XNA没有任何线索...所以不能给你特定的代码,但这个想法很简单。

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

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

然后检查dist是否<半径

答案 1 :(得分:6)

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

圈子上的最近点是

let(x,y)是鼠标的位置,(x 0 ,y 0 )是原点

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

d = SQRT((X <子> 0 -x) 2 +(Y <子> 0 -y) 2 )是该向量的长度

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