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