AffineTransform并翻转y轴

时间:2010-12-21 10:15:43

标签: java math graphic

当我试图翻转我创建的坐标系的y轴时,我遇到了一个奇怪的问题:

   private AffineTransform getTransform() {
        if (transform == null) {
            transform = new AffineTransform();
            double scaleX = (double) this.getWidth() / (coordinateSystem.getMaxX() - coordinateSystem.getMinY());
            double scaleY = (double) this.getHeight() / (coordinateSystem.getMaxY() - coordinateSystem.getMinY());
            transform.setToScale(scaleX, scaleY);
            double deltaX = (coordinateSystem.getMaxX() - coordinateSystem.getMinX()) / 2;
            double deltaY = (coordinateSystem.getMaxY() - coordinateSystem.getMinY()) / 2;
            transform.translate(deltaX, deltaY);
        }
        return transform;
    }

AffineTransform设置为缩放和翻译。一切正常,只是我的y值被反转(最大值是坐标系的底部,最小值在顶部)。我尝试通过反转y轴的比例因子来切换它。但这不起作用。

我是否必须通过PI旋转变换来实现翻转的y轴? 不应该将y轴的比例因子乘以-1来相同吗?

2 个答案:

答案 0 :(得分:4)

你有错字

double scaleX = (double) this.getWidth() / (coordinateSystem.getMaxX() - coordinateSystem.getMinY());

(上次Y应为X。)也许就是这样。

答案 1 :(得分:1)

根据PI旋转实际上根本不是一个正确的解决方案,因为它会翻转X轴和Y.