Java 在处理中:顺时针绕着 window 无限循环

Java in Processing: Make a circle go clockwise around the window endlessly

我当前的代码显示了一个圆圈,它顺时针绕 window 旋转一次,然后在它绕第二圈时从右上角移出屏幕。我怎样才能编辑我的代码,让圆圈继续无休止地绕着屏幕转,永远不会离开边缘?

// cirlce radius
final int radius = 25; 
// circle x position 
int xPos = 15; 
int yPos = 15;
int xDir = 4; 
int yDir = 0;


void setup()
{
 size(500, 500); 
 background(177, 237, 247);
}

void draw()
{
  background(177, 237, 247); 
  ellipse(xPos, yPos, radius, radius); 
  
  xPos = xPos + xDir; 
  yPos = yPos + yDir;
  
  if (xPos > width - 15) { 
    yDir = 4;
    xDir = 0;
} if (yPos > height - 15) {
  xDir = -4; 
  yDir = 0;
} if (xPos < width - 485) {
  xDir = 0; 
  yDir = -4;
} if (yPos < height - 485) {
  yDir = 0; 
  xDir = 4;
}
}

ellipse的第三个和第四个参数是轴的长度,而不是半轴的长度。因此,您需要将 radius 乘以 2。
当椭圆到达一条边时,需要用边限制椭圆的位置:

// cirlce radius
final int radius = 25; 
// circle x position 
int xPos = radius; 
int yPos = radius;
int xDir = 4; 
int yDir = 0;


void setup() {
   size(500, 500); 
   background(177, 237, 247);
}

void draw()
{
    background(177, 237, 247); 
    ellipse(xPos, yPos, radius*2, radius*2); 
    
    xPos = xPos + xDir; 
    yPos = yPos + yDir;
    
    if (xPos > width - radius) {
        xPos = width - radius;
        yDir = 4;
        xDir = 0;
    } 
    if (yPos > height - radius) {
        yPos = height - radius;
        xDir = -4; 
        yDir = 0;
    } 
    if (xPos < radius) {
        xPos = radius;
        xDir = 0; 
        yDir = -4;
    } 
    if (yPos < radius) {
        yPos = radius;
        yDir = 0; 
        xDir = 4;
    }
}