计算绘制圆形的位置。

我需要画两个圆,其中一个给出每个圆的中心点和x、y坐标,第一个圆静态,将在同一x和y上。第二个圆较小,将跟随鼠标位置,但它的中心点不能越过第一个圆的位置。考虑到我有这些变量: Circle1.x,Circle1.y,Circle.radius Mouse.x,Mouse.y

如何获取circle2的x和y?

这是一个示意图,显示我需要什么: pic 黑色:圆1 红色:圆2 绿色:鼠标

点赞
用户2458544
用户2458544

将鼠标位置减去圆心位置,得到一向量(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-10 08:45:21