旋转

【勇芳软件工作室】汉化HomePreviousNext

许多CAD应用程序提供旋转客户区域中绘制的对象的功能。如果您的应用程序具有旋转功能,请使用SetWorldTransform功能设置适当的世界空间到页面空间转换。此函数接收到包含适当值的XFORM结构的指针。eM11eM12eM21eM22成员XFORM分别规定了旋转角度的余弦,正弦,负正弦和余弦。

当发生回转时,构成对象的点相对于坐标空间原点旋转。下图显示了从世界坐标空间复制到页面坐标空间时,旋转了30度的20×20单位矩形。

在前面的图示中,矩形中的每个点相对于坐标空间原点旋转了30度。

以下算法为相对于坐标空间原点旋转角度A的点(xy)计算新的x坐标(x')。

x'=(x * cos A) - (y * sin A)

以下算法为相对于原点旋转角度A的点(xy)计算y坐标(y')。

Y“=(X *罪A)+(Y * COS A)

两个旋转变换可以按照以下的2×2矩阵组合。

| X '和' | == | X Y | * | COS罪A |

| -sin A cos A |

产生旋转的2乘2矩阵包含以下值。

| .8660 .5000|

|-.5000 .8660|

旋转算法推导

旋转算法基于三角函数的加法定理,表示两角度(A1A2)之和的三角函数可以用两个角度的三角函数来表示。

罪(A1 + A2)=(*罪COS A1 A2)+(COS A1 *罪A2)

cos(A1 + A2)=(cos A1 * cos A2) - (sin A1 * sin A2)

下图显示了一个点p逆时针旋转到新位置p'.另外,它显示了由从坐标空间原点到每个点绘制的线形成的两个三角形以及从每个点通过x轴绘制的线。

使用三角法,点p的x坐标可以通过将斜边h的长度乘以A1的余弦来获得。

x = h * cos A1

p的y坐标可以通过将斜边长度h乘以A1的正弦来获得。

Y = H *无A1

同样,点p'的x坐标可以通过将斜边长度h乘以(A1 + A2)的余弦值来获得。

x'= h * cos(A1 + A2)

最后,点p'的y坐标可以通过将斜边长度h乘以(A1 + A2)的正弦来获得。

Y“= H * SIN(A1 + A2)

使用加法定理,以前的算法变成如下。

x'=(h * cos A1 * cos A2) - (h * sin A1 * sin A2)

Y“=(H * COS A1 *罪A2)+(H *罪COS A1 * A2)

旋转角度A2的给定点的旋转算法可以通过用x代替{h * cos A1)而代入y,每次出现(h * sin A1)。

X“=(X * COS A2) - (Y *无A2)

Y“=(X *罪A2)+(Y * COS A2)