Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача с физикой
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
MSDDV
Блин есть задачка а я даже зацепиться не могу с чего начать,
может кто знает или видел....

«Кривая погони». В точке Р находится собака, а в точке Q.—заяц. Расстояние от Р до Q равно 100 м
Заяц бежит вдоль прямой L, образующей угол 45° с отрезком РQ, с постоянной скоростью 5 м/с. Собака бежит все время в направлении зайца со скоростью 10 м/с. Найти траекторию движения собаки в течение 10 с. Для приближенного решения предлагается заменить кривую ломаной линией. Считается, что в первую секунду заяц обегает отрезок QQ', собака — РР', во вторую секунду заяц пробегает отрезок Q'Q" и т. д.; собака принимает решение о направлении погони ровно один раз в секунду
hiv
Вот здесь видел.
volvo
{$n+}
uses graph;

const
dT = 1;
Vz = 5;
Vs = 10;

type
TPoint = record
X, Y: double;
end;

procedure ShowPoint(P: TPoint; color: integer);
begin
setcolor(color);
Circle(Trunc(P.X), Trunc(P.Y), 2);
end;

var
Pz, Ps: TPoint;

var
dx, dy, r: double;
gd, gm: integer;
i: integer;

begin
gd := detect;
initgraph(gd, gm, '');
if graphresult <> grok then begin
writeln('Error...'); halt(100)
end;

Pz.X := 0; Pz.Y := GetMaxY;
Ps.X := 400; Ps.Y := GetMaxY;

for i := 1 to 30 do begin
Pz.X := Pz.X + (Vz * dT * sin(45*Pi/180));
Pz.Y := Pz.Y - (Vz * dT * sin(45*Pi/180));
ShowPoint(Pz, white);

dx := Pz.X - Ps.X;
dy := Pz.Y - Ps.Y;
r := sqrt(sqr(dx)+sqr(dy));

Ps.X := Ps.X + dx * Vs * dT / r;
Ps.Y := Ps.Y + dy * Vs * dT / r;
ShowPoint(Ps, red);
end;
readln;

closegraph;

end.

Чего не понятно - спрашивай :yes:
MSDDV
вроде замысел понят, но нужен вывод на экран ломаной линии траектории
Digitalator
Вот смотри прогу, все входные данные содержаться в const, подогнать под твои условия будет не сложно :yes:
MSDDV
Блин подогнал код Digitalator, но препод сказал :nono: сделать попроще,
я тут начал, но не могу понять, как вывести ломаную траектории пути собаки blink.gif
вот, что я наделал :low:

Program Z_774;

Uses graph,
crt;
Const
shz = 50;
shs = 100;

Var
gd, gm: integer;
i: integer;

Begin
gd := detect;
initgraph(gd, gm, 'D:\bp\bgi');

if graphresult <> grok
then
begin
writeln('Error...'); halt(100)
end;


{Line (50,250,50,370);
Line (50,370,300,370);}
SetColor (white);
OutTextXY (10,242, 'Старт собаки');
Circle (20,258,2);
SetColor (yellow);
OutTextXY (130,385, 'Старт зайца');
Circle (132,370,2);


SetColor (Green);
Line (20,258,132,370);
ReadLn;

while i <> 10 do
begin
i := i + 1;
Circle (132+shz*i,370,2);
Line (132,370,132+shz*i,370);
ReadLn;
end;
closegraph;

End.

volvo
Ну неужели было ТАК сложно поменять несколько строк в моей программе, чтобы вывод был такой, как тебе нужно (ломаная линия траектории), а не такой как у меня (точечный вывод траектории) ??? Нажмите для просмотра прикрепленного файла

Добавляй свои "Старт зайца" (в левом нижнем углу экрана) и "Старт собаки" (в середине внизу экрана), и проверяй...
MSDDV
Траектория зайца должна быть вдоль оси OX, а в твоей программе траектория зайца под углом. В моей задаче вывод траектории должен быть посекундный, то есть, например, при нажатии enter происходит вывод на экран одну часть траектории зайца и собаки и делает отметку на траектории, в моём случае кружок. Всего этот процесс состоит из 10 таких кусков, то есть при таких условиях задачи собака догоняет зайца за 10 секунд, а значит ломаная будет состоять из 10 прямых. Вот что мне нужно. :yes:
volvo
Цитата
Траектория зайца должна быть вдоль оси OX, а в твоей программе траектория зайца под углом. В моей задаче вывод траектории должен быть посекундный, то есть, например, при нажатии enter происходит вывод на экран одну часть траектории зайца и собаки и делает отметку на траектории, в моём случае кружок. Всего этот процесс состоит из 10 таких кусков, то есть при таких условиях задачи собака догоняет зайца за 10 секунд, а значит ломаная будет состоять из 10 прямых. Вот что мне нужно.
Так вот если ЭТО тебе нужно, то почему обо ВСЕМ ЭТОМ нет ни слова в первоначальном задании??? angry.gif Телепатов ищещь?
MSDDV
Просто эти изменения дал мне препод только сегодня, после того, как я ему показал код :low: Digitalator'a
Прощу прощения за свой поступок и вправду убил всем столько времени
:molitva: сорри :molitva:
MSDDV
Volvo если не трудно до доделай пожалуйста :molitva: задачу по моему коду
MSDDV
Хелп завтра сдача
Прошу помощи :molitva:
MSDDV
А-А-А-А :o до сдачи семь Часов!!!!
Help me Please
:molitva: :molitva:
MSDDV
Пожалуйста кто-нибудь помогите доделать задачу по моему коду
Program Z_774


До сдачи 5 часов
Lina
А нет ни у кого этой задачи решённой с последним условием:
Цитата
Траектория зайца должна быть вдоль оси OX, а в твоей программе траектория зайца под углом. В моей задаче вывод траектории должен быть посекундный, то есть, например, при нажатии enter происходит вывод на экран одну часть траектории зайца и собаки и делает отметку на траектории, в моём случае кружок. Всего этот процесс состоит из 10 таких кусков, то есть при таких условиях задачи собака догоняет зайца за 10 секунд, а значит ломаная будет состоять из 10 прямых. Вот что мне нужно.

?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.