【问题标题】:Java - Keeping scaling relative to image's rotationJava - 相对于图像的旋转保持缩放
【发布时间】:2012-03-31 18:43:35
【问题描述】:

对于一项任务,我需要用 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()));

如何确保旋转后缩放相对于图像保持不变?

【问题讨论】:

    标签: java transform image-scaling


    【解决方案1】:

    我想到了几种方法。第一种(最简单但最慢)的方法是将拉伸的腿图像渲染为图像,然后旋转并渲染该图像。另一种方法是使用 Math.cos 和 Math.sin 在每个维度上应用适当的缩放,以获得图像中所需的效果。

    【讨论】:

    • 在第二种方法中,这意味着我还需要跟踪缩放因子并在每次旋转后在正确的方向应用新的缩放?
    • 基本上。需要跟踪更多的状态数据。此外,尝试创建变换矩阵并在纸上将它们相乘以获得 (2, 2) 处的向量,以测试您的代码和您所做的任何更改。在您的一系列转换中可能存在一些小错误,尤其是当它们逐帧发生时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    相关资源
    最近更新 更多