Создание анимации объекта, который следует по круговому пути в Java - PullRequest
1 голос
/ 10 ноября 2019

Я пытаюсь создать анимацию прямоугольника, который следует по круговой траектории, как планета вокруг Солнца, но моя анимация проходит только четверть всей орбиты. Я не совсем уверен, что я делаю не так, и ни один из ранее отвеченных вопросов не совпадает с моим. Большинство из них не реализуют java.awt.Timer. Вот мой код:

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

public class Circular_path extends JFrame{


    public Circular_path() {
        setTitle("Circular_path");
        setSize(500, 500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Canvas canvas = new Canvas();
        add(canvas);
        setVisible(true);


    }

    protected class Canvas extends JComponent implements ActionListener{
        protected double a=getWidth()/2, b=getHeight()/2; //the center of the orbit
        protected double x= 0, y = 0; //initialising x and y coordinates
        protected int r=100; //radius of circle
        protected double theta = 0.0;//angle theta

        public Canvas() {

            timer.start();
        }

        //create Timer object
        Timer timer = new Timer(10, this);

        @Override
        public void paintComponent(Graphics g) {
            System.out.println("Canvas.paintComponent");
            g.setColor(Color.RED);
            g.fillRect((int)x,(int)y,10,10);        
        }



        public void actionPerformed(ActionEvent e) {

            x = a+ (r*Math.cos(theta));
            y = b+ (r*Math.sin(theta));
            repaint();
            theta= theta+(Math.PI/1000);



        }


    }

    public static void main(String[] args) {
        new Circular_path();

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...