0
我与点的两条线段
线路1 =(X1,Y1),(X2,Y2)---较小
线路2 =(X3,Y3),(X4, Y4)---更大
旋转,使平行的两行
我怎样才能使线路1(较小的)旋转,并使其平行于线2(放大) 使用任一
1)(X1,Y1)作为固定点2)(x2,y2)作为固定的旋转点或
3)中心点作为固定的旋转点
我正在使用C#.NET。 和Aforge.NET库。
由于
我与点的两条线段
线路1 =(X1,Y1),(X2,Y2)---较小
线路2 =(X3,Y3),(X4, Y4)---更大
旋转,使平行的两行
我怎样才能使线路1(较小的)旋转,并使其平行于线2(放大) 使用任一
1)(X1,Y1)作为固定点2)(x2,y2)作为固定的旋转点或
3)中心点作为固定的旋转点
我正在使用C#.NET。 和Aforge.NET库。
由于
所有操作下面描述可以表示为affine transformation矩阵。
您可以将这三个矩阵相乘以获得整个操作的单个矩阵。你甚至可以用笔和纸做,并将结果硬编码到你的应用程序中。
至于如何计算rotation matrix:跨越线条的两个向量的点积除以这些向量的长度为cos(φ),即它们之间角度的余弦。正弦为±sqrt(1-cos(φ)2)。你只需要旋转矩阵中的这两个数字,所以不需要根据性能实际计算角度。但是,获得标志可能会非常棘手,因此就易于编程而言,您可能更愿意拨打atan2
的两个电话,以及后续拨打sin
和cos
。
将它们作为向量处理,只需从这三点中的任意一点开始绘制一个新的向量,其大小为'l1',方向为'l2'。 – Blender 2013-02-08 19:55:33
这是比编程更数学:我建议在math.stackexchange.com重新发布这个。 – BTownTKD 2013-02-08 20:18:36
@BTownTKD:请注意[多个SE网站之间的交叉邮件令人f然心动](http://meta.stackexchange.com/问题/ 64068)。您应该首先尝试一个网站,如果您没有得到满意的回复,请主持人**将该问题迁移到其他网站。 – 2013-02-10 17:55:39