Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача с физикой
Форум «Всё о Паскале» > 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 прямых. Вот что мне нужно.

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