|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.04.2009, 19:59 | #1 |
Пользователь
Регистрация: 09.03.2009
Сообщений: 49
|
Биллиардный шар
Здравствуйте. Помогите с задачкой.
Нарисуйте «биллиардный стол» – большой прямоугольник. Окружность под углом летает по столу, отскакивая от его краев по закону отражения. Попав “в лузу” (любой из четырех углов стола), останавливается. Написал следующее: uses graph, crt; label m1, m2; var x, d, m: integer; begin d:=0; initgraph (d, m, ' '); readln; setcolor(red); rectangle(80, 50, 550, 300); m2: x:=91; repeat setcolor (white); circle (x, 100, 10); delay(800); setcolor (black); circle (x, 100, 10); x:=x+1; until x>539; goto m1; m1: x:=539; repeat setcolor(white); circle(x, 100, 10); delay(800); setcolor (black); circle (x, 100, 10); x:=x-1; until x<91; goto m2; closegraph; end. Но в этом случае шар катается по прямой (слева на право). Подскажите, как сделать так, чтобы выполнить условие задачи. Спасибо. Последний раз редактировалось Shevali; 14.04.2009 в 20:32. |
14.04.2009, 22:58 | #2 |
Форумчанин
Регистрация: 12.09.2008
Сообщений: 239
|
если хотите действительно "красивый" код, то лучше задавать движение как "нормированный вектор" и "скорость".
При столкновении с бортиком V1 преобразуется в V2: V2=V1-2*n*(V^n) где n-вектор нормали борта, а "^" - скалярное произведение. Тогда можно бортики и под произвольным углом располагать.
Надо бы избавиться от привычки ставить многоточие.....
|
15.04.2009, 03:55 | #3 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
@Min
Это громоздко как–то. Можь лучше обычный вектор? А бортики по–любому параллельно координатным осям, так что банально vx := -vx при встрече стенки. |
15.04.2009, 08:18 | #4 |
Форумчанин
Регистрация: 12.09.2008
Сообщений: 239
|
согласен)))) проще)))) но эт же "некрасиво" :D
Надо бы избавиться от привычки ставить многоточие.....
|
15.04.2009, 08:32 | #5 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
x и y — это очень красиво. В большинстве случаев лучше, чем φ и r.
|