代码之家  ›  专栏  ›  技术社区  ›  Tanvir Ahmed

如何在圆周长上找到一定距离的点?

  •  0
  • Tanvir Ahmed  · 技术社区  · 2 年前

    认为 (x1, y1) 是圆周长上的一点 (x-420)^2 + (y-540)^2 = 260^2 距离圆周长上的两点是什么 d (欧几里德)从这个角度 (x1,y1)

    0 回复  |  直到 2 年前
        1
  •  1
  •   Blindman67    2 年前

    使用trig

    假设您使用的是编程语言。答案是使用伪代码。

    使用 radians 距离 d 沿圆可以表示为角度 a 计算为 a = d / r (其中 r 是半径)

    给定圆上的任意点。 (x1-420)^2 + (y1-540)^2 = 260^2 ( 注意事项 假设x1、y1已知) 我们可以提取中心是 x = 420 ,则, y = 540 ,以及半径 r = 260

    角距离d为 a = d / 260

    大多数语言都有此功能 atan2 计算向量的角度,我们可以得到圆心到任意点的角度 ang = atan2(y1 - 540, x1 - 420) ( 笔记 y 首先,然后 x )

    因此,与任意点的绝对角度 {x1, y1} 到要点 d 沿圆的距离( ang1 ,则, ang2 )计算为。。。

    // ? represents known unknowns
    x = 420
    y = 540
    r = 260
    d = ?
    x1 = ?
    y1 = ?
    ang = atan2(y1 - y, x1 - x)
    ang1 = ang + d / r
    ang2 = ang - d / r
    

    以及点的坐标( px1 ,则, py1 ,则, px2 ,则, py2 )计算为。。。

    px1 = cos(ang1) * r + x
    py1 = sin(ang1) * r + y
    
    px2 = cos(ang2) * r + x
    py2 = sin(ang2) * r + y
    

    向量代数

    这个问题也可以用向量代数来解决,不需要trig函数 atan2

    计算表示角度的单位向量 a=承兑交单 然后,以圆为原点,使用单位向量在两个方向上变换(旋转)圆上的点。将点平移回解决方案的圆原始位置。