0

我必须绘制 2 个圆圈,在其中我将每个圆圈的中心点和 x、y 都赋予绘图函数。

我第一个圈是静态的,会在同一个x和y上。第二个圆圈较小,会跟随鼠标位置,但它的中心点不能超出第一个圆圈。

考虑到我有这个变量:Circle1.x、Circle1.y、Circle.radius Mouse.x、Mouse.y

如何获得 circle2 的 x 和 y?

这是一个显示我需要的选择: 图片 黑色:Circle1 红色:Circle2 绿色:鼠标

4

1 回答 1

0

从鼠标位置减去圆心。这会产生一个从圆心指向鼠标位置的向量 (dx,dy)。该向量长度应等于或小于圆半径。如果长度小于圆的半径:鼠标位置在圆内并保持不变,如果长度大于圆的半径:将向量归一化并乘以半径,将得到的向量相加到圆的中心将导致新的位置。

伪代码:

dx = Mouse.x-Circle1.x
dy = Mouse.y-Circle1.y

length = sqrt(dx*dx+dy*dy)

if (length > Circle.radius)
  ratio = Circle1.radius/length
  Circle2.x = Circle1.x + dx*ratio
  Circle2.y = Circle1.y + dy*ratio
else
  Circle2.x = Mouse.x
  Circle2.y = Mouse.y
end
于 2013-09-10T08:45:21.250 回答