Для задания мне нужно создать «куклу» на 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()));
Как я могу убедиться, что масштабирование остается относительно изображения после поворота?
Во втором методе это означает, что мне также нужно будет отслеживать масштабированный коэффициент и применять новое масштабирование в правильном направлении после каждого поворота? – SpeedBurner
По существу. Это немного больше данных состояния, чтобы отслеживать. Кроме того, попробуйте создать матрицы преобразования и умножить их на бумаге для вектора в (2, 2), чтобы проверить как ваш код, так и любые сделанные вами изменения. Возможно, есть какая-то небольшая ошибка где-то в вашей серии преобразований, особенно если они возникают после кадра. – GGulati