Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 09.06.2015, 09:11   #1
Morreaw
Новичок
Джуниор
 
Регистрация: 09.06.2015
Сообщений: 2
По умолчанию Объяснить код программы

Помогите расписать код программы на 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);
		}

	}
	}
}
Morreaw вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решение задачи Дирихле методом Гаусса-Зейделя на Паскале. Объяснить код программы AleSanchez Помощь студентам 0 23.09.2013 17:18
Компонент TColorButton, объяснить код (Delphi) MIXER_ok Помощь студентам 2 13.11.2012 07:30
объяснить код на Delphi за WMR HelpMeGiveWmr Фриланс 8 15.01.2012 23:47
как грамотно объяснить код (делфи 7) MegaMozg28 Помощь студентам 0 10.06.2010 13:23
Срочно!Нужно объяснить код программ! ArcaN0id Помощь студентам 1 28.06.2009 11:15


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS