four systems Ответов: 0

Вращение Java, не вращается вокруг определенной точки, А движется


Вот java-код для вращения шара вокруг точки, мяч должен вращаться вокруг точки и не двигаться, однако он движется влево по мере вращения

Что я уже пробовал:

package draw;

import java.awt.*;
import java.awt.image.BufferedImage;

public class Rotation extends java.applet.Applet {
    
    final static int BALL_RADIUS = 45;
    
    BufferedImage ball = null;
    
    public void init()
    {
        ball = new BufferedImage(BALL_RADIUS, BALL_RADIUS, BufferedImage.TYPE_INT_RGB);
                
        Graphics ballG = ball.getGraphics();   
             
        ballG.setColor(Color.white);
                
        for(int i=-20;i<=0;i++)
        {
         ballG.drawOval(i, i, BALL_RADIUS + ((-i)*2), BALL_RADIUS + ((-i)*2));                    
        }
    }   
    
    public void paint(Graphics g)
    {
        float angle = 0;
        double speed =  0.1;
        int x = 140;
        int y = 140;
        for(int c=0;c<1600;c++)
        {
        float radius = 4;           
        x = (int) (x + Math.cos(angle) * radius);
        y = (int) (y + Math.sin(angle) * radius);
        angle += speed;        
        g.fillRect(42, 45, getBounds().width, getBounds().height);
        g.setColor(Color.white);        
        g.drawImage(ball, x, y, this);             
        delay(25);    
    }
        System.out.println("paint() done");    
}   
    
    private void delay(int millis)
    {
        try{Thread.sleep(millis);}catch(Exception ignored){}       
    }
}

Richard MacCutchan

Он двигается повсюду, когда я его запускаю. Вероятно, потому, что значения x и y постоянно меняются.

four systems

круто, работает нормально, теперь изменил координаты как
x = (int) (155 + Math. cos (угол) * радиус);
y = (int) (45 + Math. sin (угол) * радиус);
спасибо

0 Ответов