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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2016, 11:03   #11
W3Avenger
 
Регистрация: 21.10.2016
Сообщений: 9
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Держите .
Скорость задаю не через угол, а через проекции вектора скорости.
Что значит домножение модуля вектора скорости на некую k в mod1??
W3Avenger вне форума Ответить с цитированием
Старый 22.10.2016, 14:34   #12
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от W3Avenger Посмотреть сообщение
Что значит домножение модуля вектора скорости на некую k в mod1??
Имеете в виду в функции AxAirVect ?
Сначала в функции fAxAir вычисляем абсолютное значение ( модуль ) аэродинамического ускорения ( то есть торможения ).
Но это ускорение - величина векторная, имеющая направление навстречу вектору скорости. Для того, чтобы создать вектор, и используется AxAirVect , в которой kVect.
А вообще функция kVect используется и в других местах, например при вычислении следующих pos, vel по предыдущим, в процедуре MoveT.

kVect - это вообще функция умножения любого вектора на любое число.

Вот, закомментил часть кода:
Код:
repeat
  t:=t+dt;
  mAxAir:=fAxAir(M,S,ro,Cx,ModQuaVect(vel));  // модуль аэродин. торможения
  axAir:=AxAirVect(mAxAir,vel);  // вектор аэродин. торможения
  axSum:=SumVect(axAir,axGr);    // полный вектор ускорения = уск. св. падения + аэродин. торможения
  MoveT(dt,axSum,pos,vel);       // изменение вектора положения и вектора скорости
  Memo1.Lines.Add(FloatToStr(t));
  Memo2.Lines.Add(FloatToStr(pos.X));
  Memo3.Lines.Add(FloatToStr(pos.Y));
  Memo4.Lines.Add(FloatToStr(vel.X));
  Memo5.Lines.Add(FloatToStr(vel.Y));
 until (pos.Y<0)or(t>TMAX);    //  .. пока не упадет, или пока t<MAX
// t>TMAX - защита от дурака, если зафутболить тело с космической скоростью, то не дождешься пока оно упадет
Проверил на примере падения капель дождя.
Капля 0.5 мм у меня падает с установившейся скоростью ~ 4 м/сек, капля 5 мм - 12.5 м/сек . Сравнить - отсюда:
Скорость падения дождевых капель диаметром 0,5 мм на уровне моря и без ветра составляет от 2 до 6,6 метров в секунду, в то время как капли диаметром 5 мм имеют скорость от 9 до 30 метров в секунду
Вроде нормально..

Кстати, обнаружился в этом случае небольшой баг - нельзя задавать начальную скорость точно =0 ( и Vx=0; Vy=0 ), будет деление на 0. Пришлось для капель задать небольшую Vx=0.1.

Последний раз редактировалось type_Oleg; 22.10.2016 в 15:23.
type_Oleg вне форума Ответить с цитированием
Старый 22.10.2016, 19:48   #13
W3Avenger
 
Регистрация: 21.10.2016
Сообщений: 9
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Для того, чтобы создать вектор, и используется AxAirVect ...
Так, внимание, а если я, как дурак вырежу половину вашей работы и попробую задать скорость не компонентами, не векторами, а через модуль скорости и угол.... Какие могут быть варианты? Считать через массив с определенным приращением не получится?
W3Avenger вне форума Ответить с цитированием
Старый 22.10.2016, 23:08   #14
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от W3Avenger Посмотреть сообщение
.. и попробую задать скорость не компонентами, не векторами, а через модуль скорости и угол...
Только задавать скорость не через Vx, Vy , а через V и угол, а вообще векторы сохранить ?
Или вообще отказаться от типа tVector (и для координат, и для скорости, и для ускорения), и использовать отдельные переменные X,Y,Vx,Vy,Ax,Ay ?

Вобщем-то и так, и так можно. Только сами переделывайте.

Только я не понял, что значит Считать через массив с определенным приращением ...
type_Oleg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Взрыв снаряда[моделирование полета осколков] Axmo Visual C++ 8 13.12.2014 09:29
Моделирование движения 2-мерного геометрического тела в воде. TriV90 Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 26.09.2013 13:20
Траектория полета тела брошенного под углом к горизонту в трех измерениях. _PROGRAMM_ Помощь студентам 7 06.01.2013 12:02
Моделирование движения тела HellGate666 Помощь студентам 0 06.04.2011 22:52
Движение тела, брошенного под углом к горизонту с учетом сопротивления Encore Помощь студентам 0 03.04.2011 20:34