在 AutoCAD 内部使用任意轴算法为所有使用对象坐标系的对象生成对象坐标系。
利用给定的作为坐标系统 Z 轴的单位长度矢量,通过任意轴算法可以生成坐标系统的 X 轴,再根据右手法则确定 Y 轴。
此方法用来检查给定的 Z 轴(也被称作法向量),看它是否与世界坐标系的 Z 轴的正负半轴接近:如果接近,则用给定的 Z
轴叉积世界坐标系的 Y 轴来求取任意 X 轴;如果不接近,则用给定的 Z 轴叉积世界坐标系的 Z 轴来求取任意
X 轴。决定是否接近的边界值根据易于计算和便于在机器间交换数据的原则确定。该边界值现取值 1/64,此值正好既能用六个十进制分数数字表示也能用六个二进制分数位表示。
算法描绘如下(假定所有矢量都是用世界坐标系表示的三维矢量):
设给定的法向量为 N;
设世界坐标系的 Y 轴为 Wy,其值始终为 (0,1,0);
设世界坐标系的 Z 轴为 Wz,其值始终为 (0,0,1);
设根据法向量 N 确定的任意 X 和 Y 轴为 Ax 和 Ay,N 也可被称为
Az(任意 Z 轴),它们的求取方法如下:
如果 (abs (Nx) < 1/64) 且 (abs (Ny)
< 1/64) 则
Ax = Wy X N (此处 "X" 为叉积运算)。
否则,
Ax = Wz X N.
调整 Ax 比例到单位长度。
求取 Ay 矢量的方法如下:
Ay = N X Ax. 调整 Ay 比例到单位长度。
对象坐标系统 (OCS)
要在图形数据库中保存空间(在 DXF 文件中),与每个图元关联的点将以图元的自己的对象坐标系统(OCS)表示。在早先版本的
AutoCAD 中 OCS 被称作 ECS。在 OCS 中,描述三维空间中图元位置所需要的附加信息是描述
OCS 的 Z 轴的三维矢量和标高值。
如果给定 Z 轴(或拉伸)方向,可以通过平移三维空间中的原点和围绕 Z
轴旋转 X 和 Y 轴定义无穷多的坐标系。 但对于相同的 Z 轴方向,只有一个 OCS,它具有如下特性:
它的原点与 WCS 原点一致;
XY 平面中的 X 和 Y 轴方向以任意方式确定且一旦确定便固定不变。AutoCAD
使用任意轴算法来确定此坐标系(请参见任意轴算法)。 对于一些图元,OCS 等同于 WCS 且所有点(DXF
组 10 - 37)以世界坐标表示,请参见下表:
与图元类型联系的坐标系统
图元 | 说明 |
三维图元,如:直线、点、三维面、三维多段线、三维顶点、三维网格和三维网格顶点。 | 这些图元不位于某一特别的平面中,所有的点都以世界坐标表示。在这些图元中只有直线和点可被拉伸,它们的拉伸方向可以不同于世界坐标系的 |
二维图元图元,如:圆、圆弧、填充、宽线、文字、属性、属性定义、形、插入、二维多段线、二维顶点、优化多段线、图案填充和图像。 | 这些图元本质上是平面的,所有的点都以对象坐标表示。这些图元都能被拉伸,它们的拉伸方向可不同于世界坐标系的 |
标注 | 一些标注点可以用 WCS 表示,一些标注点可以用 OCS 表示。 |
视口 | 以世界坐标系表示。 |
一旦 AutoCAD 为给定的图元确定 OCS,此 OCS 使用如下:
与图元存储在一起的标高值表示 XY 平面(与包含图元的平面重合)与 WCS
原点间的位移(沿 Z 轴方向),用户定义标高的大小并不重要。
任何 UCS 中二维点都被转换成相应的 OCS 中的二维点,这些点将依据
UCS 来平移和旋转。
转换过程中可能出现下列情况:
当用户获得一个图元后,不能可靠地找出究竟是哪一个 UCS 在起作用;
当用户按给定的 UCS 输入图元的 XY 坐标后,进行 SAVEAS时,在
DXF 文件中可能不承认这些坐标,为了使用这些值,您必须知道 AutoCAD 计算 X 和 Y 轴的方法。
与图元存储在一起的且被输出到 DXF 文件中的标高值是 UCS 的 XY
面与 OCS 的 XY 平面的 Z 坐标的总差值,此刻此图元的用户指定的标高值则被绘制。