Отрисовка картинки повернутой в направлении движения | Graphics | Graphics2D
Надо отрисовать картинку повернутую в направлении движения (поворот должен быть относительно центра картинки):
Пример: 
Я знаю скорость по x и y, и положение картинки(x,y), и размер картинки(ширина и высота), а так же размер поля на котором рисую
Я пробовал так:
Graphics2D g = (Graphics2D) gr;
g.rotate(Math.toRadians(Math.atan(vx/vy))); // vx,vy - скорость по x и y
g.fillRect((int)(x-w/2), (int) (y-h/2), w, h); // Это я потом заменю на картинку
но картинка повернута НЕ относительно центра и поворот неправильный
Подробности:
- Рисую на JPanel в методе
paint(Graphics gr) - Использую Graphics2D
Ответы (1 шт):
Math.atanтребует отношенияy/x, но это не так важно, потому что см. нижеMath.atanнужно заменить наMath.atan2(vy, vx), чтобы получить угол во всём диапазонеРезультат
Math.atan/atan2уже в радианах, не нужно ещё преобразовывать, еслиrotateтребует радианов
Для поворота относительно определенной точки (cx, cy) матрица аффинного преобразования строится так:
перенос на (-cx, -cy)
поворот
перенос на (cx, cy)
В Graphics2D я вижу для этого перекрытый метод:
rotate(double theta, double x, double y)