Tar*_*aal 2 graphics xna geometry
我正在玩XNA.当我单击鼠标左键时,我会记录X,Y坐标.按住鼠标按钮,移动鼠标会从此原点绘制一条线到当前鼠标位置.我将它偏移到了窗口的中间.
现在,我想做的是将鼠标光标限制在一个圆圈内(半径为N,以屏幕中间为中心).将鼠标限制在矩形区域很容易(通过鼠标位置和区域大小的差异来调整原点),但我还没有找到如何开始为圆形区域进行操作的线索.
任何人都可以解释如何做到这一点?任何关于从哪里开始的建议都会有所帮助.
我对如何使用XNA没有任何线索...所以不能给你特定的代码,但这个想法很简单.
用Pythagora定理检查当前鼠标位置与原点之间的距离:
dist = sqrt((current_y - orig_y)^2 + (current_x - orig_x)^2)
然后检查dist是否<半径
每次鼠标移动时,您都需要将其限制在当前位置和圆上最近点之间的矩形.
圈子上最近的点是得到的
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点 - 即最近点在圆圈上鼠标指针.