0 голосов
 
1139 просмотров
8.02.2019 / 18:25  Кальцид

Поворот линии

Есть линия с координатам x1 y1 начало x2 y2 конец . Как ее повернуть на определеный угол в градусах относительно ее начала т.е. х1 у1 и относительно любой другой точке . Например 100 100
8.02.2019 / 21:46  aNNiMON
При помощи матрицы преобразований. Вот тут наглядно с кодом на джаваскрипте https://annimon.com/article/2808
Ответы
 
4 голоса
 
# 8.02.2019 / 20:04  vlavolk
Вот тут формулы с объяснением. Есть калькулятор

http://www.abakbot.ru/online-2/91-rotate

А вот готовые формулы
переменные:
угол A = 90°
точка начала x1, y1 = (7:-5)
точка конца x2, y2 = (4:2)
Большинство ЯП вычисляет функции cos и sin от угла в радианах, потому переводим в радианы:
Arad = \frac{A \cdot Math.PI}{180}
Теперь посчитаем новые координаты точки - смещаем центр линии к точке (0:0), пересчитываем координаты точки (x2:y2) и прибавляем к ним начало:
x2 = x2-x1\\y2 = y2-y1\\x2 = (x2 \cdot cos(Arad)-y2 \cdot sin(Arad)) + x1 \\y2 = (x2 \cdot sin(Arad)+y2 \cdot cos(Arad)) + y1 \\
Arad = \frac{90 \cdot 3.14159}{180} =1.57\\x2 = 4 - 7=-3\\y2 = 2 - (-5)=7\\x2 = (-3 \cdot 0-7 \cdot 1)+7 = 0\\y2 = (-3 \cdot 1+7 \cdot 0)+(-5) = -8\\
Поворот против часовой стрелки. Для поворота по часовой угол берем с отрицательным значением

https://annimon.com/qa/a629/IMG_20190208_200311.jpg

Так же можно вращать, зная радиус.
x2 = R \cdot cos(Arad) + x1y2 = R \cdot sin(Arad) + y1

А для упрощения расчета можно уйти от перевода градусов в радианы и сразу пользоваться радианами:
rad = \frac{Math.Pi}{180}\\Arad += 30 \cdot rad\\
rad - один радиан
в данном случае угол увеличивается на 30°
Изм. aNNiMON от 8.02.2019 / 21:33

IMG_20190208_200311.jpg (36.42 кб.)
9.02.2019 / 11:44  Death
А мне подробно никто так не отвечал
Всего: 1

Реклама

Мы в соцсетях

tw tg yt gt