Heim  >  Artikel  >  Java  >  Wie kann ich in Java eine Form vertikal um die x-Achse drehen?

Wie kann ich in Java eine Form vertikal um die x-Achse drehen?

DDD
DDDOriginal
2024-10-27 21:35:30369Durchsuche

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

Eine Form vertikal um die x-Achse drehen

Der bereitgestellte Code zeigt, wie ein Polygon gedreht wird, dreht es jedoch nicht um die x-Achse. Um eine vertikale Drehung um die x-Achse zu erreichen, können wir das Polygon um 90 Grad drehen und dann die gewünschte Drehung im Bogenmaß anwenden. Hier ist der geänderte Code:

<code class="java">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();
    }
}</code>

In diesem Code drehen wir das Polygon in der paintComponent-Methode mit g2d.rotate(Math.PI / 2, w / 2, h / 2) um 90 Grad. Dadurch wird das Polygon an der x-Achse ausgerichtet, sodass wir mit g2d.rotate(theta, w / 2, h / 2) die gewünschte Drehung im Bogenmaß anwenden können.

Das obige ist der detaillierte Inhalt vonWie kann ich in Java eine Form vertikal um die x-Achse drehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn