Спасибо за помощь, ребята, но я думаю, что эти объяснения были слишком техническими для меня. Тем не менее, вы дали мне понять, что нет особого случая для треугольника (который, оглядываясь назад, я должен был знать), поэтому я попробовал свои силы в поиске и, попробовав несколько методов, нашел тот, который мне помог.
Не углубляясь в общие решения и математику (как уже упоминалось выше в постерах и множестве статей), я мог бы дать вам пример того, как решить проблему, «поворачивая точку A вокруг точки B на C градусов ».
Теперь. Прежде всего, как я описал в предыдущем посте, точка, которая находится на оси X, расстояние L от ориг., Повернута на C градусов вокруг ориг. На
x = L * cos (C)
y = L * sin (C)
Аналогичным образом формула для перпендикулярного вектора имеет вид x = -y | y = x, что означает, что точка, которая находится на оси Y (опять же, L из оригинала), будет вращаться на C по формуле
x = - L * sin (C)
y = L * cos (C)
Как показано на рисунке выше, окончательное решение представляет собой сумму поворотов проецируемых векторов, поэтому мы можем вывести формулу
x '= x * cos (C) - y * sin (C)
y '= y * cos (C) + x * sin (C)
... но ты уже знал это, верно? Проблема в том, что эта формула вращается только вокруг оригинала. Итак, нам нужно переместить систему координат, которую мы вращаем, в исходное положение, повернуть и затем вернуться назад. Это можно сделать быстро с помощью комплексных чисел или в общих решениях с матрицами, но мы остановимся на векторной математике, чтобы упростить ее.
первый шаг; переместить исходную точку.
x '= A.x - B.x
y '= A.y - B.y
второй шаг, выполнить вращение
x '' = x '* cos (C) - y' * sin (C) = (A.x-B.x) * cos (C) - (A.y-B.y) * sin (C)
y '' = y '* cos (C) + x' * sin (C) = (A.y-B.y) * cos (C) + (A.x-B.x) * sin (C)
третий и последний шаг, сдвинуть назад координатную рамку
x '' '= x' '+ B.x = (A.x-B.x) * cos (C) - (A.y-B.y) * sin (C) + B.x
y '' '= y' '+ B.y = (A.y-B.y) * cos (C) + (A.x-B.x) * sin (C) + B.y
И престо! у нас есть формула вращения. Я дам вам это без всех этих> вычислений:
Вращение точки A вокруг точки B на угол C
A.x '= (A.x-B.x) * cos (C) - (A.y-B.y) * sin (C) + B.x
A.y '= (A.y-B.y) * cos (C) + (A.x-B.x) * sin (C) + B.y
Если вы следили за мной здесь (а я довольно паршивый учитель, извините, если вы этого не сделали), вы можете заметить, что порядок выполнения этих операций очень важен. Попробуйте смешать шаги 3 и 1 и увидите разницу в формулах, которые вы получаете.
Удачи и всего!