2012-03-31 1 views
0

Для задания мне нужно создать «куклу» на Java, где вы можете перемещать ее и поворачивать руки и ноги, чтобы сделать смешные/крутые позы. Кроме того, ноги должны быть способны растягиваться (но не расширяться, это важно).Java - Сохранение масштабирования относительно поворота изображения

Способ, которым я хотел справиться с растяжением ноги, был инвертирован поворот, выполняемый к ноге, чтобы вернуть его в нейтральное прямое положение, масштабировать его в направлении y, а затем снова выполнить вращение. Однако, похоже, масштабирование всегда будет в направлении y, поэтому, как только оно повернется, нога станет шире. Он будет выглядеть так, как должен, если он вернется прямо и стоит.

код я прямо сейчас выглядит примерно так:

leg.transform(AffineTransform.getRotateInstance(legAngle,pivot.getX(),pivot.getY()).createInverse()); 
leg.transform(AffineTransform.getScaleInstance(1,scaleFactor); 
leg.transform(AffineTransform.getRotateInstance(legAngle,pivot.getX(),pivot.getY())); 

Как я могу убедиться, что масштабирование остается относительно изображения после поворота?

ответ

1

Есть несколько способов, которые приходят на ум. Первый (самый простой, но самый медленный) метод состоит в том, чтобы визуализировать изображение с растянутыми ногами на изображении, затем поворачивать и отображать это изображение. Другой способ - использовать Math.cos и Math.sin для применения правильного масштабирования в каждом измерении для желаемого эффекта изображения.

+0

Во втором методе это означает, что мне также нужно будет отслеживать масштабированный коэффициент и применять новое масштабирование в правильном направлении после каждого поворота? – SpeedBurner

+0

По существу. Это немного больше данных состояния, чтобы отслеживать. Кроме того, попробуйте создать матрицы преобразования и умножить их на бумаге для вектора в (2, 2), чтобы проверить как ваш код, так и любые сделанные вами изменения. Возможно, есть какая-то небольшая ошибка где-то в вашей серии преобразований, особенно если они возникают после кадра. – GGulati

 Смежные вопросы

  • Нет связанных вопросов^_^