Как найти точку привязки / вращения в Java? - PullRequest
3 голосов
/ 17 марта 2011

Хорошо, я пытался повернуть прямоугольник, который расположен сверху изображения.У меня есть класс Scrollable, который отображает изображение.Я могу нарисовать прямоугольники поверх изображения.Моя проблема заключается в попытке повернуть прямоугольники, когда изображение поворачивается.Прямоугольник теряется и помещается в неправильном месте.

Я уже пытался подать в суд на Graphics2D, AffineTransform, createTransformedShape (), но не повезло.

Сейчас я пытаюсьповерните прямоугольник вручную.Я пытаюсь получить Rectangle Point (x, y), используя следующую формулу:

double rectX = (Math.cos(Math.toRadians(90)) * (x - anchorX) - Math.sin(Math.toRadians(90)) * (y - anchorY)) + anchorY;

double rectY = (Math.sin(Math.toRadians(90)) * (x - anchorX) - Math.cos(Math.toRadians(90)) * (y - anchorY)) + anchorY;

Как я могу найти значения anchorX и anchorY, используя Java?Я попытался уменьшить высоту изображения на 2, но не работает для всех углов поворота.Должен ли я получить JPanel ширину и высоту или что-то?Есть ли формула, которую Java использует для нахождения опорных точек?

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Я не уверен в цели, но вижу два возможных альтернативных подхода:

  • Используйте обратное преобразование, как показано здесь .

  • Визуализация вертикального изображения и прямоугольника (ов) в BufferedImage и поворот составного изображения, как показано здесь .

1 голос
/ 17 марта 2011

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

...