在java中使用rotate90两次旋转数组180度

我对java相当陌生。我只是想消除我的疑惑。这是否将阵列旋转 90 度,然后再旋转 90 度,因为它是在相同的方法中还是没有。


这是我的rotate90代码:


void rotate90() {

    int temp = x;

    x = -y;

    y = temp;

}

这是调用方法:


static void randomPattern(Screen2D window) {

    while (notFull()) {


        walk.clear();

        Point2D start = getFreePoint();

        recursiveSelfAvoidingWalk(0, start.x, start.y);


        for (Point2D pt: walk) {

            pt.rotate90();

            pt.translate(Screen2D.HEIGHT-1, 0);

        }

        Point2D [] pts = walk.toArray(new Point2D[] {});

        PolyLine myWalk = new PolyLine(pts, '#');

        myWalk.setParent(window);

        myWalk.draw();


        for (Point2D pt: walk) {

            pt.rotate90();

            pt.rotate90();

            pt.translate(Screen2D.WIDTH, Screen2D.HEIGHT);

        }

        myWalk.draw();

    }

    window.display();

}


拉丁的传说
浏览 219回答 1
1回答

猛跑小猪

我猜您使用的是自己的 Point2D 类而不是 java.awt.geom.Point2D (因为后者似乎没有提供 rotate90 方法)。就我所见,以 (0,0) 为中心的逆时针旋转在数学上是正确的。然而,旋转两次 90° 就像旋转 180° 或只是取向量的倒数。那么为什么不使用void rotate180() {   x = -x;   y = -y;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java