我正在创建一个应用程序,我将在屏幕上绘制两个圆圈,一个带有较小圆圈的大圆圈。我希望用户能够在大圆的内部或外部触摸/拖动屏幕,并在该方向上移动较小的圆。如果用户触摸大圈外侧,则小圈不会超出大圈的边界。叠加图像
随着我所做的研究,我可以很容易地画出彼此的两个圆圈,并处理较小图像的运动。但是,我看不到一个简单的方法来限制小圆圈留在大圆圈内。我发现的所有东西都是裁剪,但这只会导致较小的圆只能部分绘制。有没有人有一个很好的参考我可以用来开始研究如何这是可能的?谢谢。
我正在创建一个应用程序,我将在屏幕上绘制两个圆圈,一个带有较小圆圈的大圆圈。我希望用户能够在大圆的内部或外部触摸/拖动屏幕,并在该方向上移动较小的圆。如果用户触摸大圈外侧,则小圈不会超出大圈的边界。叠加图像
随着我所做的研究,我可以很容易地画出彼此的两个圆圈,并处理较小图像的运动。但是,我看不到一个简单的方法来限制小圆圈留在大圆圈内。我发现的所有东西都是裁剪,但这只会导致较小的圆只能部分绘制。有没有人有一个很好的参考我可以用来开始研究如何这是可能的?谢谢。
比方说大圈子有收音机Rb和中心Cb。内圈将是Ri和中心Ci。
如果您将Ci到Cb的距离(从内圆中心到大圆中心)设置为小于Rb-Ri(比内Radous的大半径的其余部分),您将始终拥有里面的内圈..你明白了吗?只需画出它,看看它总是如此)距离(Ci到Cb)< Rb-Ri 您需要做的唯一事情就是检查它是否属实。从词到的Cb
距离为Math.Sqrt(math.Pow(CIX-CBX,2)+ Math.Pow(CIY-CBY,2))
在纸上画出来,它似乎是有道理的。我今晚必须打球。 – Mike 2009-11-04 22:46:36
在极坐标中做它可能会更容易(当然要考虑它)。 – 2009-11-04 23:32:51
您需要将笛卡尔坐标(从屏幕)转换为极坐标,其中包含的操作数量相当于计算两点(两个中心)之间的距离, – jmayor 2009-11-05 21:10:23