Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2009, 19:59   #1
Shevali
Пользователь
 
Регистрация: 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.
Shevali вне форума Ответить с цитированием
Старый 14.04.2009, 22:58   #2
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

если хотите действительно "красивый" код, то лучше задавать движение как "нормированный вектор" и "скорость".
При столкновении с бортиком V1 преобразуется в V2:
V2=V1-2*n*(V^n)
где n-вектор нормали борта, а "^" - скалярное произведение.
Тогда можно бортики и под произвольным углом располагать.
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 15.04.2009, 03:55   #3
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

@Min

Это громоздко как–то. Можь лучше обычный вектор? А бортики по–любому параллельно координатным осям, так что банально vx := -vx при встрече стенки.
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Старый 15.04.2009, 08:18   #4
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

согласен)))) проще)))) но эт же "некрасиво" :D
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 15.04.2009, 08:32   #5
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

x и y — это очень красиво. В большинстве случаев лучше, чем φ и r.
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц