我必须绘制2个圆圈,我将绘制函数赋予每个圆的中心点和x,y。
我的第一个圈是静态的,将在同一个x和y上。 第二个圆圈较小,将跟随鼠标位置,但它的中心点不能超出第一个圆圈。
考虑到我有这些变量: Circle1.x,Circle1.y,Circle.radius Mouse.x,Mouse.y
如何获得circle2的x和y?
这是一个显示我需要的选项:
黑色:Circle1
红色:Circle2
绿色:鼠标
答案 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