@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-а, камеры) не нашел отладкой, а если они есть где то в глубине филдов класса то они будут недоступны из класса круга или просто недоступны (типа приватные).

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

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

Похожие вопросы