【发布时间】:2010-05-17 21:24:15
【问题描述】:
我在玩 XNA。当我单击鼠标左键时,我记录了 X、Y 坐标。按住鼠标按钮,移动鼠标会从该原点画一条线到当前鼠标位置。我已将其偏移到窗口的中间。
现在,我想做的是将鼠标光标限制在一个圆圈内(半径为 N,以屏幕中间为中心)。将鼠标限制在矩形区域很容易(通过鼠标位置和区域大小的差异来调整原点),但我不知道如何开始对圆形区域进行操作。
谁能解释一下如何做到这一点?任何关于从哪里开始的建议都会有所帮助。
【问题讨论】:
我在玩 XNA。当我单击鼠标左键时,我记录了 X、Y 坐标。按住鼠标按钮,移动鼠标会从该原点画一条线到当前鼠标位置。我已将其偏移到窗口的中间。
现在,我想做的是将鼠标光标限制在一个圆圈内(半径为 N,以屏幕中间为中心)。将鼠标限制在矩形区域很容易(通过鼠标位置和区域大小的差异来调整原点),但我不知道如何开始对圆形区域进行操作。
谁能解释一下如何做到这一点?任何关于从哪里开始的建议都会有所帮助。
【问题讨论】:
我不知道如何使用 XNA...所以不能给你具体的代码,但想法很简单。
只需用毕达哥拉定理检查当前鼠标位置与原点之间的距离:
dist = sqrt((current_y - orig_y)^2 + (current_x - orig_x)^2)
然后检查dist是否为
【讨论】:
每次鼠标移动时,您都需要将其限制在当前位置和圆上最近点之间的矩形内。
圆上最近的点是通过
设 (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 处的点沿着将原点连接到鼠标位置的线 - 即圆上离鼠标指针最近的点。
【讨论】: