Geometry 圆弧变换起点到起点角度终点角度

Geometry 圆弧变换起点到起点角度终点角度,geometry,transformation,dxf,Geometry,Transformation,Dxf,给定一个具有起点和终点(在笛卡尔x,y坐标中)、半径和方向(顺时针或逆时针)的圆弧的描述,我需要将该圆弧转换为具有起点角度、终点角度、中心和半径的圆弧 是否有已知的算法或伪代码允许我这样做?还有,是否有任何特定的术语来描述这些类型的变换?你可以找到一个中心来求解这个方程组: (sx-cx)^2 + (sy-cy)^2=R^2 (ex-cx)^2 + (ey-cy)^2=R^2 其中(sx,sy)是起点的坐标,(ex,ey)表示终点,未知量cx,cy表示中心。 该系统有两种解决方案。那么就有可能

给定一个具有起点和终点(在笛卡尔x,y坐标中)、半径和方向(顺时针或逆时针)的圆弧的描述,我需要将该圆弧转换为具有起点角度、终点角度、中心和半径的圆弧


是否有已知的算法或伪代码允许我这样做?还有,是否有任何特定的术语来描述这些类型的变换?

你可以找到一个中心来求解这个方程组:

(sx-cx)^2 + (sy-cy)^2=R^2
(ex-cx)^2 + (ey-cy)^2=R^2
其中(sx,sy)是起点的坐标,(ex,ey)表示终点,未知量cx,cy表示中心。 该系统有两种解决方案。那么就有可能找到像这样的角度

StartAngle = ArcTan2(sy-cy, sx-cx)
EndAngle = ArcTan2(ey-cy, ex-cx)

注意,已知方向不允许在没有额外限制的情况下从两个可能的解决方案中选择一个。例如,start=(0,1)、end=(1,0)、R=1和Dir=顺时针为我们提供圆心为(0,0)的Pi/2弧和圆心为(1,1)的3*Pi/2弧。

我会提出一种不同于MBo的方法来获得两个圆的圆心,这两个圆都具有给定的半径并通过起点和终点

如果p和Q是圆弧的起点和终点,则两个圆的中心位于与PQ正交的线L上,即从p到Q的线,该线将PQ平分。从中心到L的距离d很容易通过毕达哥拉斯定理得到。如果e是PQ的长度,那么d^2+(e/2)^2=r^2。这样你就避免了去解从MBo方法中得到的方程组


注意,如果你有一个半圆,任何方法都会变得数值不稳定,因为只有一个给定半径的圆上有p和Q。(我想我记得,在这种情况下,正确的术语是‘问题是不适定的’。当P和Q正好相距2r时,就会发生这种情况,为了弄清楚这是否真的成立,你需要检查两个双精度的相等性,这总是有点问题。如果出于某种原因,你知道你有一个半圆,你最好只计算cen这也是我的问题。你是用这些答案中的一个还是别的什么?如果我们处理的是3D坐标系,StartAngle和EndAngle公式会是什么样子?@CinCout在3D中,我们应该为弧选择/定义一个平面,并在这个平面中像在2D中一样工作(顺时针方向和其他东西在3D中没有意义)