2016-12-15 52 views
0

我需要将两条线a(A,B)和b(C,D)对齐,使它们彼此平行。旋转点P可以在线外,这样两条线将共享相同的旋转点。 Python或Geogebra解决方案是首选。在Geogebra的情况下,CAS操作很好。解决方案即。旋转角度应为度数并且重新定位线b(C,D)新坐标c(E,F)。将线a平行于与线b相关的旋转点p

提供例证阐明该问题:线

dAB = (B.X - A.X, B.Y - A.Y) 
dCD = (D.X - C.X, D.Y - C.Y) 

2查找角度需要做出线平行使用标量和叉积的

Parallel lines

+0

这是什么意思:'线性每个other' - 平行?很高兴看到插图。 – MBo

+0

是的,平行。我需要纠正这个词并设置一个数字。 – MarkokraM

+0

添加插图 – MarkokraM

回答

1

1获得方向矢量

Theta = Math.ArcTan2(Cross(dAB, dCD), Dot(dAB, dCD)) = 
     Math.ArcTan2(dAB.X * dCD.Y - dAB.Y * dCD.X, dAB.X * dCD.X + dAB.Y * dCD.Y) 

3旋转点C和D大约中心P(在你图象旋转的段是AB,在这种情况下使用的负角度-Theta

C'.X = P.X + (C.X - P.X) * Cos(Theta) - (C.Y - P.Y) * Sin(Theta) 
C'.Y = P.Y + (C.X - P.X) * Sin(Theta) + (C.Y - P.Y) * Cos(Theta) 
the same for D 
+0

感谢您将交叉点和点积分解为点展示。这在GeoGebra中也很有魅力。我总是忘记问这个问题,但是你为了解决这个问题而学习了什么? – MarkokraM

+0

第3段的矢量代数/几何和仿射变换的基础知识 – MBo

相关问题