"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java에서 x축을 중심으로 도형을 수직으로 회전하려면 어떻게 해야 합니까?

Java에서 x축을 중심으로 도형을 수직으로 회전하려면 어떻게 해야 합니까?

2024년 11월 17일에 게시됨
검색:391

How can I rotate a shape vertically around the x-axis in Java?

x축을 중심으로 수직으로 도형 회전

제공된 코드는 다각형을 회전하는 방법을 보여 주지만 회전하지는 않습니다. x축. x축을 중심으로 수직 회전을 달성하려면 다각형을 90도 회전한 다음 원하는 회전을 라디안 단위로 적용하면 됩니다. 수정된 코드는 다음과 같습니다.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class RotatingShape extends JPanel implements ActionListener {

    private int[] p1x = {200, 200, 240, 240, 220, 220, 200};
    private int[] p1y = {200, 260, 260, 240, 240, 200, 200};
    private Polygon p1 = new Polygon(p1x, p1y, p1x.length);
    private double theta = 0;
    private double dt = Math.PI / 36; // Rotation speed
    private Timer timer = new Timer(100, this);

    public RotatingShape() {
        this.setPreferredSize(new Dimension(700, 700));
        this.setBackground(Color.white);
        p1.translate(-50,  100);
    }

    @Override
    public void actionPerformed(ActionEvent event) {
        theta  = dt;
        repaint();
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        int w = this.getWidth();
        int h = this.getHeight();
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        g2d.drawLine(w / 2, 0, w / 2, h);
        g2d.drawLine(0, h / 2, w, h / 2);
        g2d.rotate(Math.PI / 2, w / 2, h / 2); // Rotate 90 degrees to align with x-axis
        g2d.rotate(theta, w / 2, h / 2); // Apply rotation around x-axis
        g2d.drawPolygon(p1);
    }

    public void start() {
        timer.start();
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Rotating Shape");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        RotatingShape sl = new RotatingShape();
        frame.add(sl);
        frame.pack();
        frame.setVisible(true);
        sl.start();
    }
}

이 코드에서는 g2d.rotate(Math.PI / 2, w / 2, h / 2)를 사용하여 PaintComponent 메서드에서 다각형을 90도 회전합니다. 이렇게 하면 다각형이 x축에 정렬되어 g2d.rotate(theta, w / 2, h / 2)를 사용하여 원하는 회전을 라디안 단위로 적용할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3