Движение обьекта по спирали - Java

Узнай цену своей работы

Формулировка задачи:

Нарисовал при помощи метода polygon фигуру, как сделать так чтобы она двигалась начиная с центра экрана по спирали?

Решение задачи: «Движение обьекта по спирали»

textual
Листинг программы
package spiral;
 
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class spiral {
    JFrame frame;            
    Figura figura;
 
    private int oneX1[] = {400,420,440};
    private int oneY1[] = {432,400,432};
    private int oneX2[] = {400,420,440};
    private int oneY2[] = {432,464,432};
 
    public static void main(String[] args)
    {
        new spiral().go();
    }
 
    private void go()
    {
        frame = new JFrame("Test");
        figura = new Figura();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setSize(800, 800);
        frame.add(figura);
        frame.setVisible(true);
 
        moveIt();
 
    }
 
    class Figura extends JPanel
    {     
        public void paintComponent(Graphics g)
        {           
            g.setColor(new Color(0,0,255));
            g.fillPolygon(oneX1, oneY1, 3);         
            g.setColor(new Color(0,255,0));
            g.fillPolygon(oneX2, oneY2, 3);         
        }
    }
 
    private void moveIt()
    {
        int v=0,vx=1;
        while (true)
        {
            for(int i=0;i<3;i++) {
            oneX1[i]+=vx*Math.cos(10*v);
            oneX2[i]+=vx*Math.cos(10*v);
            oneY1[i]+=vx*Math.sin(10*v);
            oneY2[i]+=vx*Math.sin(10*v);
            }
            v++;vx++;
 
           if (((oneX1[0]<=0) || (oneX1[0]>=800))||((oneY1[0]<=0) || (oneY1[0]>=800))) {
               oneX1[0]=400;oneX1[1]=420;oneX1[2]=440;
               oneY1[0]=432;oneY1[1]=400;oneY1[2]=432;
               oneX2[0]=400;oneX2[1]=420;oneX2[2]=440;
               oneY2[0]=432;oneY2[1]=464;oneY2[2]=432;
               vx=1;v=0;}
           
            try
            {
                Thread.sleep(10);
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }  
            frame.repaint();
        }
    }
    
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5