Maison  >  Article  >  Java  >  Comment puis-je faire pivoter une forme verticalement autour de l’axe des x en Java ?

Comment puis-je faire pivoter une forme verticalement autour de l’axe des x en Java ?

DDD
DDDoriginal
2024-10-27 21:35:30279parcourir

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

Faire pivoter une forme verticalement autour de l'axe des x

Le code fourni montre comment faire pivoter un polygone, mais il ne le fait pas tourner autour l'axe des x. Pour obtenir une rotation verticale autour de l'axe des x, nous pouvons faire pivoter le polygone de 90 degrés, puis appliquer la rotation souhaitée en radians. Voici le code modifié :

<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>

Dans ce code, nous faisons pivoter le polygone de 90 degrés dans la méthode paintComponent en utilisant g2d.rotate(Math.PI/2, w/2, h/2). Cela aligne le polygone avec l'axe des x, nous permettant d'appliquer la rotation souhaitée en radians en utilisant g2d.rotate(theta, w/2, h/2).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn