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

我有两个相连的线段 AB 和 BC (并且我知道坐标)。如何计算第一个和最后一个绿点之间的弧度。第一个和最后一个绿点位于距 B 点(黑色部分)指定距离的位置。我想要数组中所有绿点的坐标。任何人都可以帮助我解决这个问题吗?
问题归结为在给定半径r、点B以及方向BC和BA的情况下找到圆K的中心。
\n
按着这些次序:
\n使用您找到的任何“两个平面向量之间的角度”算法查找BC和AB之间的角度\xcf\x86(有很多方法)。
\n计算圆弧夹角\xcf\x88
\n\xcf\x88 = 2*arcsin(cot(\xcf\x86/2))
计算弧终止处沿BC 的距离s
\ns = r*cot(\xcf\x86/2)
如果BC的方向为e_BC=(ex,ey)且法线为则圆弧Mn_BC=(ey,-ex)的终点为
(mx,my) = (bx,by) + s*(ex,ey)
圆心是
\n(kx,ky) = (mx,my) + r*(-ey,ex)
现在以N =4 角度增量将M点绕K旋转以获得绿色点
\ni-th point: i=1..4
gx = kx + (mx-kx)*cos((i/4)*\xcf\x88)+(my-ky)*sin((i/4)*\xcf\x88)
gy = ky - (mx-kx)*sin((i/4)*\xcf\x88)+(my-ky)*cos((i/4)*\xcf\x88)
根据本网站上关于 TTR 算法(tan-tan-radius)的其他答案,解决此问题的最佳方法是将线偏移半径r并找到成为圆弧中心的交点。
\n\n请注意,根据偏移线的哪一侧,有四个可能的交点。所有这些都是有效的,并且用户可以选择/决定需要哪一个。
\n