我有两条线段,点
Line1 = (x1,y1) , ( x2,y2) --- 更小
Line2 = (x3,y3) , (x4,y4) --- 更大
如何使 Line1(更小)旋转并使其平行于 Line2(更大)使用
1) (x1,y1) 作为旋转固定点或
2) (x2,y2) 作为旋转固定点或
3) 中心点作为旋转固定点
我正在使用 C#.NET。和 Aforge.NET 库。
谢谢
下面描述的所有操作都可以表示为仿射变换矩阵。
您可以将这三个矩阵相乘以获得整个操作的单个矩阵。您甚至可以使用笔和纸来完成,并将结果硬编码到您的应用程序中。
至于如何计算旋转矩阵:跨越线的两个向量的点积除以这些向量的长度,就是 cos(φ),即它们之间夹角的余弦。正弦为 ±sqrt(1-cos(φ)²)。您只需要旋转矩阵中的这两个数字,因此无需根据性能实际计算角度。但是,获得正确的符号可能会很棘手,因此就简单的编程而言,您可能会更好地调用两次atan2
、 差异以及随后调用sin
and cos
。