计算一个圆圈的位置

时间:2013-09-10 03:17:17

标签: javascript math lua rect

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

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

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

如何获得circle2的x和y?

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

1 个答案:

答案 0 :(得分:0)

从鼠标位置减去圆心。这导致从圆心到鼠标位置的矢量(dx,dy)。该矢量长度应等于或小于圆半径。如果长度小于圆的半径:鼠标位置在圆内并保持不变,如果长度大于圆的半径:标准化矢量并将其与半径相乘,添加结果矢量到圆圈的中心将导致新的位置。

Psuedo代码:

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