@BlinCT

Как правильно повернуть в нужную сторону обьект?

Всем привет.
Имеется вот такая окружность, 65f15c090749b006990329.png
и с внешней стороны имеется зеленые ромбы. Они расположены на определенном угле по отношению к центру окружности.
И мне их надо повернуть, так чтобы нижняя часть ромба смотрела как бы в центр окружности, и как я понимаю вершины робма должны быть на данном угле.
Вопрос как вычеслить угол для поворота фигуры?
И самое главное, например 2 левых ромба должны быть повернуты против часовой стрелки, то есть на лево, а другие 2 по часовой стрелке.
В данном примере порядок углов на котором находятся ромбы это -165, -135, -45, -30
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
hint000
@hint000
у админа три руки
Как видите, помеченные углы равны (альфа).
Поскольку у вас углы отрицательные (отсчитываются в противоположную сторону по сравнению с общепринятой математикой), то искомый угол будет 90 градусов плюс угол направления на ромб. Т.е. для -30 получится 90-30=60.
65f16827f3239117679819.png
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Не надо объект поворачивать. надо его рисовать сразу правильно ориентированным.

Ваш ромб - это 4 точки. Одну вы знаете - она на окружности, под заданным углом в зависимости от скорости. Вы эту точку вычислять умеете - вы туда стрелочку спидометра рисуете.

Противоположную точку вы можете легко найти - она под тем же углом, но на окружности большего радиуса.

Две оставшееся точки на окружности какого-то среднего радиуса под углами с небольшим отклонением от предыдущего угла в обе стороны.

Эти углы надо будет рассчитать на бумажке. Нарисуйте 2 коружности заданого радиуса, постройте между ними ромб, проведите его диагонали, найдете там парочку прямоугольних треугольников. В программе можно будет просто эти длины засунуть в формулы и скормить какой-нибудь atan2() функции.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы