如何找到连接两个线段的弧?

use*_*059 5 math 2d

我将从帮助我描述我的问题的 img 开始:

我有两个相连的线段 AB 和 BC (并且我知道坐标)。如何计算第一个和最后一个绿点之间的弧度。第一个和最后一个绿点位于距 B 点(黑色部分)指定距离的位置。我想要数组中所有绿点的坐标。任何人都可以帮助我解决这个问题吗?

ja7*_*a72 6

问题归结为在给定半径r、点B以及方向BCBA的情况下找到圆K的中心。

\n

图片

\n

按着这些次序:

\n
    \n
  1. 使用您找到的任何“两个平面向量之间的角度”算法查找BCAB之间的角度\xcf\x86(有很多方法)。

    \n
  2. \n
  3. 计算圆弧夹角\xcf\x88

    \n

    \xcf\x88 = 2*arcsin(cot(\xcf\x86/2))

    \n
  4. \n
  5. 计算弧终止处沿BC 的距离s

    \n

    s = r*cot(\xcf\x86/2)

    \n
  6. \n
  7. 如果BC的方向为e_BC=(ex,ey)且法线为则圆弧Mn_BC=(ey,-ex)的终点为

    \n

    (mx,my) = (bx,by) + s*(ex,ey)

    \n
  8. \n
  9. 圆心是

    \n

    (kx,ky) = (mx,my) + r*(-ey,ex)

    \n
  10. \n
  11. 现在以N =4 角度增量将M点绕K旋转以获得绿色点

    \n

    i-th point: i=1..4

    \n

    gx = kx + (mx-kx)*cos((i/4)*\xcf\x88)+(my-ky)*sin((i/4)*\xcf\x88)

    \n

    gy = ky - (mx-kx)*sin((i/4)*\xcf\x88)+(my-ky)*cos((i/4)*\xcf\x88)

    \n
  12. \n
\n
\n

根据本网站上关于 TTR 算法(tan-tan-radius)的其他答案,解决此问题的最佳方法是将线偏移半径r并找到成为圆弧中心的交点。

\n

图2

\n

请注意,根据偏移线的哪一侧,有四个可能的交点。所有这些都是有效的,并且用户可以选择/决定需要哪一个。

\n