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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2010, 17:22   #1
AleSS
 
Регистрация: 26.01.2010
Сообщений: 9
Печаль Моделирование движения тела под действием силы тяжести

"Воланчик на дереве. Человек хочет сбить воланчик. как надо кинуть камень в воланчик чтобы попасть?"
Помогите решить задачу нужно сдавать завтра! Очень нужна помощь
Вот как вычислить x,y:
Xval=Vo*cos(alfa)*t
Yval=Vo*sin(alfa)*t-0.5*g*t^2
Изображения
Тип файла: jpg ска8нирование0001.jpg (138.6 Кб, 133 просмотров)
AleSS вне форума Ответить с цитированием
Старый 26.01.2010, 17:53   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

1. На чём писать-то?

2. "...как надо кинуть камень". Ещё и оптимизацию какую-то делать, что-ли?!

3. На блок-схеме, в блоке ввода, alfa хорошо бы ввести. А вот fl там ни к чему. Его в следующем блоке просто FALSE (0) положить надо.

4. S - это текущее расстояние между камнем и воланом, а tp - расстояние, при котором волан считается сбитым? Ну и обозначения у вас, ребята...
Vago вне форума Ответить с цитированием
Старый 26.01.2010, 18:09   #3
AleSS
 
Регистрация: 26.01.2010
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
1. На чём писать-то?

2. "...как надо кинуть камень". Ещё и оптимизацию какую-то делать, что-ли?!

3. На блок-схеме, в блоке ввода, alfa хорошо бы ввести. А вот fl там ни к чему. Его в следующем блоке просто FALSE (0) положить надо.

4. S - это текущее расстояние между камнем и воланом, а tp - расстояние, при котором волан считается сбитым? Ну и обозначения у вас, ребята...
На паскале.
Ну как кинуть камень так в задании.. Под каким градусом.
alfa в тетради написано, этот листок дал тоже учитель.
AleSS вне форума Ответить с цитированием
Старый 26.01.2010, 18:27   #4
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Не. Паскаль - это не ко мне, извини. Удачи!

added. Тут, недалеко, физику 2D игр обсуждают. Может там кто поможет...

Последний раз редактировалось Vago; 26.01.2010 в 18:42.
Vago вне форума Ответить с цитированием
Старый 26.01.2010, 18:54   #5
AleSS
 
Регистрация: 26.01.2010
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
Не. Паскаль - это не ко мне, извини. Удачи!

added. Тут, недалеко, физику 2D игр обсуждают. Может там кто поможет...
Спасибо что хотели помочь.
Может кто ещё знает? Помогите
AleSS вне форума Ответить с цитированием
Старый 26.01.2010, 18:59   #6
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

что такое Sx,Sy,S? и как они вычисляются?
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 26.01.2010, 19:33   #7
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Sx, очевидно, - разность между x-й координатой воланчика и текущей x-й координатой камня. (xc-x) в обозначениях блок-схемы. Можно и по модулю сразу взять.
Sy - аналогично для оси Y.
S - расстояние между воланчиком и камнем.

added 19:57 CET
Господа полиглоты, выручите страдальца - переложите с Цэ на Паскаль.
Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>

int main() {
   
   bool        fl;                 // true, ежели попали; false, если промахнулись
   double    alfaDeg,         // угол (к горизонту), под которым бросаем камень (град.)
                  alfaRad,          // то же (рад.)
                  s,                   // расстояние между камнем и воланчиком
                  sx,                 // насколько близко камень от волана по оси X
                  sy,                 // то же по оси Y
                  t,                   // время в полёте
                  v0,                 // начальная скорость камня (м/с)
/*               Координатная система:
                  OX - параллельно горизонту,
                  OY - естественно, вертикально вверх,
                  начало координат - в точке, где камень отрывается от ладони */
                  x, y,               // координаты камня в момент времени t
                  xV, yV;           // координаты волана
   const double   dt = 0.2,        // шаг квантования по времени (надо бы помельче!!)
                  g  = 9.81,             // вроде, в школах ещё учат, как это называется?...
                  PI = 2.*asin(1.),   // ...и это тоже
                  tp = 0.035;           // расстояние, пролетев от волана не дальше которого, камень его зацепит

   printf( "Gde zastryal volanchik (x y (m))? " ); scanf( "%lf%lf", &xV, &yV );
   printf( "S kakoy skorostyu (m/s) shvyryaem kamen'? " ); scanf( "%lf", &v0 );
   printf( "Pod kakim uglom? " ); scanf( "%lf", &alfaDeg );
   alfaRad = alfaDeg*PI/180.;

   printf( "Xv=%.2f Yv=%.2f V=%.2f alfa=%.2f\n", xV, yV, v0, alfaDeg );

   printf("  t     x      y       sx      sy      s\n");
   t = 0;
   do {
      fl = false;
      // Координаты камня
      x = v0*cos(alfaRad)*t;
      y = v0*sin(alfaRad)*t-0.5*g*t*t;
      sx = xV-x;       
      sy = yV-y;
      s = sqrt(sx*sx+sy*sy);  // Расстояние между камнем и воланчиком
      if (s <= tp) {          // Однако, ПОПАЛИ!
         fl = true;
//       break;               // Можно было бы и выйти тут же, но в блок-схеме этого нету.
      }
      printf( "%5.2f%7.3f%7.3f%8.3f%8.3f%8.3f\n", t, x, y, sx, sy, s );
      t += dt;
   } while (y >= 0 );  // продолжаем считать, пока камень - на высоте больше той, с которой был брошен

   printf( fl ? "Popal!" : "Ne popal :(" );
   printf( "\n" );

   return 0;

}

Последний раз редактировалось Vago; 26.01.2010 в 21:59.
Vago вне форума Ответить с цитированием
Старый 27.01.2010, 08:41   #8
AleSS
 
Регистрация: 26.01.2010
Сообщений: 9
По умолчанию

[QUOTE=Vago;446737]Sx, очевидно, - разность между x-й координатой воланчика и текущей x-й координатой камня. (xc-x) в обозначениях блок-схемы. Можно и по модулю сразу взять.
Sy - аналогично для оси Y.
S - расстояние между воланчиком и камнем.

added 19:57 CET
Господа полиглоты, выручите страдальца - переложите с Цэ на Паскаль.


Спасибо!
Переведите на паскаль пожалуйста!
AleSS вне форума Ответить с цитированием
Старый 27.01.2010, 09:09   #9
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

Программа готова!Стучи в аську!отдам за 50 рублей
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»

Последний раз редактировалось IT-man; 27.01.2010 в 09:46.
IT-man вне форума Ответить с цитированием
Старый 27.01.2010, 16:01   #10
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
const dt=0.2;
       g=9.81;
       pi=3.14;
       tp=0.035;
 var u:real;
     s,sx,sy:real;
     t,v0,x,y:Real;
      xv,yv:Real;
      fl:Boolean;
begin
  Writeln('input xv,yv:');
  Readln(xv,yv);
  Writeln('input v0');
  Readln(v0);
  Writeln('input ugol');
  Readln(u);
  clrscr;
  Writeln('------------------------------------');
  Writeln('':4,'xv','':8,'yv','':6,'v0','':5,'u');
  Writeln('------------------------------------');
  Writeln(xv:8:2,yv:8:2,v0:8:2,u:8:2);
  Writeln('------------------------------------------------');
  Writeln('':4,'t','':8,'x','':8,'y','':5,'sx','':6,'sy','':6,'s');
  Writeln('------------------------------------------------');
  u:=u*pi/180;
  t:=0;
  repeat
    fl:=False;
    x:=v0*cos(u)*t;
    y:=v0*sin(u)*t-0.5*g*t*t;
    sx:=xv-x;
    sy:=yv-y;
    s:=Sqrt(Sqr(sx)+sqr(sy));
    if s<=tp then
    begin
      fl:=True;Break;
      Writeln(t:8:3,x:8:3,y:8:3,Abs(sx):8:3,Abs(sy):8:3,s:8:3);
      Writeln('------------------------------------------------');
    end;
    Writeln(t:8:3,x:8:3,y:8:3,Abs(sx):8:3,Abs(sy):8:3,s:8:3);
    Writeln('------------------------------------------------');
    t:=t+dt;
  until (y<0);
  if fl then writeln('Yes')
  else Writeln('no');
  Readln;
end.
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Моделирование дорожного движения Gerber2009 Помощь студентам 15 30.10.2014 13:55
Моделирование движения тела под действием силы тяжести AleSS Помощь студентам 0 26.01.2010 16:45
моделирование движения шаров с массой и диаметромт по прямой в двумерном пространстве belomorinka Помощь студентам 8 01.06.2009 11:17
Движение тела под углом Lemo Помощь студентам 6 05.04.2009 14:49