Помогите объяснить код на java, то есть сделать комментарии к коду программы.
Код:
public class Tennis {
public static void clearCircle(double[] centre,double r){
double rpen=0.002,rpenClear = 0.004;
StdDraw.setPenColor(StdDraw.BLACK);
StdDraw.setPenRadius(r);
StdDraw.circle(centre[0], centre[1], r);
StdDraw.circle(centre[0], centre[1], r);
StdDraw.setPenRadius();
StdDraw.setPenColor();
}
public static double[] moveCircle(double[] ctr, double[] e,double step) {
double [] ctrNew = new double[ctr.length];
ctrNew[0] = ctr[0]+step*e[0];
ctrNew[1] = ctr[1]+step*e[1];
return ctrNew;
}
public static double[] wallKick(double[] ctr, double r, double[] e){
double [] eNext = new double[2];
eNext[0]=e[0];
eNext[1]=e[1];
if ((Math.abs(ctr[0])<r) | (Math.abs(ctr[0]-1)<r)) {
eNext[0]=-e[0];
eNext[1]=e[1];
return eNext;
}
if ((Math.abs(ctr[1])<r) | (Math.abs(ctr[1]-1)<r)) {
eNext[0]=e[0];
eNext[1]=-e[1];
return eNext;
}
return eNext;
}
public static void main(String[] args) {
int N=30000;
double r=0.001;
double k=2,step=r;
double[] centre = new double[2];
double[] centreNew = new double[2];
centre[0]=0.5;//Math.random();
centre[1]=0.5;//Math.random();
double[] vector = new double[2];
double[] vectorNew = new double[2];
vector[0]=(Math.random()*2-1)*100;
vector[1]=(Math.random()*2-1)*100;
double koef = Math.sqrt(vector[0]*vector[0]+vector[1]*vector[1]+0.001);
vector[0]=vector[0]/koef;
vector[1]=vector[1]/koef;
//System.out.println(vector[0]+ " " + vector[1]);
for (int i = 0;i<N;i++){
StdDraw.circle(centre[0], centre[1], r);
//цикл для искусственной задержки
//for (int j=0;j<20000000;j++)
//k=Math.sqrt(k);
try { Thread.sleep(1);
if (i<N-1)
centreNew = moveCircle(centre, vector,step);
vectorNew=wallKick(centreNew, r, vector);
if ((vectorNew[0]!=vector[0])|(vectorNew[1]!=vector[1]))
step = r;
else
step = r;
vector[0]=vectorNew[0];
vector[1]=vectorNew[1];
//System.out.println(vector[0]+ " " + vector[1]);
clearCircle(centre, r); //стираем текущий рисунок и передвигаем центр
centre[0] = centreNew[0];
centre[1] = centreNew[1];
//System.out.println(centre[0]+ " " + centre[1]);
}
catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}