如何计算(x,y)固定弧长远离圆周上的点

JCo*_*way 9 c c++ geometry trigonometry geometric-arc

我已经花了这么多时间,我可以感觉到我的理智慢慢滑落.所以任何帮助都会真正受到赞赏.我会尝试尽可能简洁.

我在2D平面上有一个圆圈.我知道它的中心点(C)和半径(R)的笛卡尔坐标.

我的困惑源于这个问题.在圆圈外面的平面上设有一个点; 我可以计算最接近该点的圆周上的点(P).

我想要做的是确定圆周上2个点的(x,y)坐标.我们称他们为P1和P2.P1和P2是弧的两端.弧具有固定长度(X).P是P1和P2之间的中间点.因此,从P到P1&P到P2的弧长都是X/2.

简而言之:给定C,R,P,X; 我需要计算P1和P2.

我试图用c ++编写代码,但任何建议或伪代码都会很棒.

编辑:X是弧长,而不是P1和P2之间的直线

Jes*_*der 4

在圆上,角度theta对应于 的弧长theta * R,这意味着您的弧所对的角度为theta = X / R。所以如果从你的观点开始

P = C + R * (sin(u), cos(u))
Run Code Online (Sandbox Code Playgroud)

然后只需向上/向下移动theta/2

P1 = C + R * (sin(u + theta/2), cos(u + theta/2))
Run Code Online (Sandbox Code Playgroud)

P2 = C + R * (sin(u - theta/2), cos(u - theta/2))
Run Code Online (Sandbox Code Playgroud)