大神们,帮忙改个代码,让笛卡尔心形的点一个一个出现解决方法

大神们,帮忙改个代码,让笛卡尔心形的点一个一个出现
让笛卡尔心形的点一个一个出现,每个出现间隔0.1秒

package ks13209202;
import java.awt.*;
import javax.swing.*;
import java.applet.*;

public class Ksfj01 extends Applet{
int width, height; 
Image image; 

Graphics g1; 


public void init(){ 
setBackground(Color.black); 
this.setSize(450, 450); 

width = getSize().width; 
height = getSize().height; 
image = createImage(width, height); 
g1 = image.getGraphics(); 
   }

public void paint(Graphics g) { 
g1.clearRect(0, 0, width, height); 
g1.setColor(Color.red); 


for ( int i = 0; i <= 90; i++ ){

for ( int j = 0; j  <= 90; j++ ){ 


double r = Math.PI / 45 * i * (1 - Math.sin(Math.PI / 45 * j)) * 18; 
double x = r * Math.cos(Math.PI / 45 * j) * Math.sin(Math.PI / 45 * i) + width /2;    //为了在中间显示,加了偏移量
double y = -r * Math.sin(Math.PI / 45 * j) + height / 4;  //为了在中间显示,加了偏移量
g1.fillOval((int) x, (int)y, 2,2);

}
}
g.drawImage(image, 0, 0, this); 


}

------解决思路----------------------
Thread.sleep(100)有用不
------解决思路----------------------
这个得拿算法来算了

for (int i = 0; i <= 90; i++) {

for (int j = 0; j <= 90; j++) {

double r = Math.PI / 45 * i * (1 - Math.sin(Math.PI / 45 * j))* 18;
double x = r * Math.cos(Math.PI / 45 * j)
* Math.sin(Math.PI / 45 * i) + width / 2; // 为了在中间显示,加了偏移量
double y = -r * Math.sin(Math.PI / 45 * j) + height / 4; // 为了在中间显示,加了偏移量
g1.fillOval((int) x, (int) y, 2, 2);
                                //在这个里面画,调整参数,写出算法
g.drawImage(image, 0, 0, this);
}
}