Rumah > Java > javaTutorial > Bagaimanakah saya boleh memutarkan bentuk secara menegak di sekeliling paksi-x di Jawa?

Bagaimanakah saya boleh memutarkan bentuk secara menegak di sekeliling paksi-x di Jawa?

DDD
Lepaskan: 2024-10-27 21:35:30
asal
462 orang telah melayarinya

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

Memusingkan bentuk secara menegak di sekeliling paksi-x

Kod yang disediakan menunjukkan cara memutar poligon, tetapi ia tidak memutarkannya ke sekeliling paksi-x. Untuk mencapai putaran menegak di sekeliling paksi-x, kita boleh memutarkan poligon sebanyak 90 darjah dan kemudian menggunakan putaran yang dikehendaki dalam radian. Berikut ialah kod yang diubah suai:

<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>
Salin selepas log masuk

Dalam kod ini, kami memutarkan poligon sebanyak 90 darjah dalam kaedah paintComponent menggunakan g2d.rotate(Math.PI / 2, w / 2, h / 2). Ini menjajarkan poligon dengan paksi-x, membolehkan kami menggunakan putaran yang diingini dalam radian menggunakan g2d.rotate(theta, w / 2, h / 2).

Atas ialah kandungan terperinci Bagaimanakah saya boleh memutarkan bentuk secara menegak di sekeliling paksi-x di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan