如何在3D ARC for DXF文件中计算起始角度和终止角度?

问题描述

不确定是不是问这个问题的正确地方,但是我可以看到这里解决了很多DXF查询

我有三个3D点(P1 ; P2 ; P3 ),我必须使用它们生成3D ARC并将其存储在DXF中格式。到目前为止,我已经能够生成Center(代码:10,20,30),Radius(代码:40),Extrusion Vector(代码:210、220、230)的坐标。但是无法找到或开发圆弧的起始角和终止角的数学模型(代码:50、51)。

请帮助我了解为ARC生成起点和终点角度的数学原理。

解决方法

ARC实体(分别为DXF组50和51)的起始角和终止角是从弧的对象坐标系(OCS)的x轴逆时针测量的度数。

OCS用于定义平面实体的坐标系,它本身是通过将Arbitrary Axis Algorithm应用于实体的法线/拉伸矢量(DXF组210)来定义的。

给出一个挤压矢量N = (Nx,Ny,Nz)和世界坐标系(WCS)轴矢量:

Wx = (1,0)
Wy = (0,1,0)
Wz = (0,1)

OCS轴向量(Ox,Oy,Oz)的定义如下(其中^是叉积):

if abs(Nx) < 1/64 and abs(Ny) < 1/64 then
    Ox = Wy ^ N
else
    Ox = Wz ^ N
end if
Oy = N ^ Ox
Oz = N

在计算Ox时,起始角度将是由弧的中心+ Ox定义的矢量与弧的中心+弧的第一个点之间的角度。可以使用这两个向量的点积来计算该角度。