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