4

作成中の座標系の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軸の倍率を反転させて切り替えてみました。しかし、これは機能していませんでした。

反転したy軸を実現するには、変換をPIで回転させる必要がありますか?y軸の倍率にマイナス1を掛けるのは同じではありませんか?

4

2 に答える 2

4

タイプミスがあります

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

(最後Yは である必要がありXます。) おそらくそれだけです。

于 2010-12-21T11:42:38.470 に答える
1

PI による回転は、X 軸だけでなく Y 軸も反転するため、実際にはまったく正しい解決策ではありません。

于 2010-12-21T18:41:39.840 に答える