@blajlhimik

Как реализовать поворот треугольника за курсором мыши?

Я знаю что вопрос стар как мир, но все же...
Я собирался делать прицепленый к центру круг и двигать мир, то есть у круга было бы константные координаты для рисования + относительные координаты нахождения в мире (разные были бы значения), так вот, нашел я камеру в flame там почти все это сделано.
Поворот дула! Скрин:
6244494129e99450979689.png
я сделал поворот дула для изначального принципа, получилась вот такая хрень:
double getRotation(double x, double y) {
    double rad = 0;
    double difY = (y - _cursorY) < 0 ? (y - _cursorY) * -1 : (y - _cursorY);
    double difX = (_cursorX - x);
    if (y < _cursorY) {
      rad = atan2(difY, difX);
    } else {
      rad = pi - pi - atan2(difY, difX);
    }
    return rad;
  }

x,y - это координаты центра круга
_cursorX,_cursorY - это координаты курсора
+ ко всему надо было довернуть круг с стрелкой на pi/2.
Вот... пока камера находится в рамках начало мира, то есть координаты камеры и мира равны все работает, но если сместить камеру то начинаются проблемы, надеюсь понятно какие...
62444d3ec2ef0271104706.png
координаты центра круга (относительно окна, canvas-а, камеры) не нашел отладкой, а если они есть где то в глубине филдов класса то они будут недоступны из класса круга или просто недоступны (типа приватные).

Как получить поворот в таких условиях? наверняка как-то легко это делается какими нибудь средствами движка, но я не нашел
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
@blajlhimik Автор вопроса
туплю, надо просто расчитывать от центра экрана положения курсора... хорошо в левом верхнем углу, если у круга будет координаты меньше половины экрана, вот как тут
624466e6a43d0742165207.png
то все нормально должно быть, а так
6244670fca246694930621.png
?
он уже не будет в центре, и координаты мира не совпадут с оконными
62446768436ec228205209.png
всегда, конечно же можно ограничить зону = окно/ 4 всего мира по всем краям вот так
62446849dd384621780230.png
но, может есть другое решение?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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