2016-12-15 4 views
0

Мне нужно выровнять две линии a (A, B) и b (C, D) так, чтобы они были параллельны друг другу. Точка поворота P может находиться вне линий, так что обе линии будут иметь одинаковую точку поворота. Предпочтительным является решение Python или Geogebra. В случае Geogebra операции CAS прекрасны. Решение, т.е. угол поворота должен быть в градусах и переориентированной линии b (C, D) новых координат c (E, F).Выровнять линию параллельно линии b, связанной с точкой поворота p

Предоставлено иллюстрации для выяснения вопроса:

Parallel lines

+0

Что это значит: 'линейная друг other' - параллельно? Было бы хорошо видеть иллюстрацию. – MBo

+0

Да, параллельно. Мне нужно исправить слово и установить фигуру. – MarkokraM

+0

Иллюстрация добавлена ​​ – MarkokraM

ответ

1

1 Get векторов направления линий угол

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

2 Поиск необходимых для создания линий параллельно с использованием скалярных и кросс продукты

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 о центре Р (у вас картина повернутый сегмент 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