我在玩XNA。当我单击鼠标左键时,我会记录X,Y坐标。按住鼠标按钮,移动鼠标会从此原点绘制一条线到当前鼠标位置。我已将其偏移到窗口中间。
现在,我想做的是将鼠标光标限制在一个圆内(半径为N,以屏幕中间为中心)。将鼠标限制在矩形区域很容易(通过鼠标位置和区域大小的差异来调整原点),但我还没有了解如何开始为圆形区域进行操作。
任何人都可以解释如何做到这一点?关于从哪里开始的任何建议都会有所帮助。
答案 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的点沿着连接原点到鼠标位置的线 - 即圆圈上距离鼠标指针最近的点。