如何计算画布上追踪指针位置的固定圆路径坐标?
几何坐标计算问题

如上图所示:
- x, y 为圆心点,a1, b1 为圆上的半径端点
- x1, y1 为画布上的指针位置,与 x, y 和 a1, b1 三点共线
- 当指针位置移动到 x2, y2 时,求 a2, b2(即图中问号
?)的值
我的目标是:无论将光标/指针移动到画布何处,点a1,b1都能追踪新位置,确保圆心到鼠标位置的直线始终经过该点。
该如何进行计算?
计算方法
- 先确定圆的固定半径 r,即圆心到初始端点的距离:
r = √[(a1 - x)² + (b1 - y)²]
- 计算圆心到新指针位置的方向向量:
- x分量:
dx = x2 - x - y分量:
dy = y2 - y
- 计算该方向向量的长度(圆心到指针的直线距离):
d = √(dx² + dy²)
- 若d为0(指针刚好在圆心),则直接取
a2 = x,b2 = y(或保留原端点位置,按需调整);否则将方向向量归一化后乘以半径,再叠加圆心坐标得到目标点:
a2 = x + (dx / d) * r b2 = y + (dy / d) * r
这个逻辑的核心是利用共线方向一致的特性,通过归一化方向向量保证目标点始终在圆上,且严格处于圆心到指针的直线路径上。
内容的提问来源于stack exchange,提问作者Vikas Acharya
相关产品推荐
相关产品推荐

