0


我有两条线段,点
Line1 = (x1,y1) , ( x2,y2) --- 更小
Line2 = (x3,y3) , (x4,y4) --- 更大

如何使 Line1(更小)旋转并使其平行于 Line2(更大)使用

1) (x1,y1) 作为旋转固定点或
2) (x2,y2) 作为旋转固定点或
3) 中心点作为旋转固定点

我正在使用 C#.NET。和 Aforge.NET 库。

中心点作为旋转的固定点

谢谢

4

1 回答 1

1

下面描述的所有操作都可以表示为仿射变换矩阵。

  1. 将所需的旋转中心移动到原点。
  2. 计算旋转角度或直接计算旋转矩阵。见下文。
  3. 应用该旋转,作为围绕原点的旋转。
  4. 应用反向平移将旋转中心移回其原始位置。

您可以将这三个矩阵相乘以获得整个操作的单个矩阵。您甚至可以使用笔和纸来完成,并将结果硬编码到您的应用程序中。

至于如何计算旋转矩阵:跨越线的两个向量的点积除以这些向量的长度,就是 cos(φ),即它们之间夹角的余弦。正弦为 ±sqrt(1-cos(φ)²)。您只需要旋转矩阵中的这两个数字,因此无需根据性能实际计算角度。但是,获得正确的符号可能会很棘手,因此就简单的编程而言,您可能会更好地调用两次atan2、 差异以及随后调用sinand cos

于 2013-02-09T03:36:25.677 回答