Russian Qt Forum
Март 29, 2024, 14:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Расчет скоростей [решено]  (Прочитано 18877 раз)
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #15 : Июнь 04, 2018, 15:49 »

Я извиняюсь, но вот "квадратичность" зависимости скорости от времени - это 100% заданное начальное условие или просто взято как иллюстрация (а движение может быть неравномерным)?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #16 : Июнь 04, 2018, 17:10 »

Я извиняюсь, но вот "квадратичность" зависимости скорости от времени - это 100% заданное начальное условие или просто взято как иллюстрация (а движение может быть неравномерным)?
Как иллюстрация) Если использовать в качестве апроксимирующей функции полином, то в общем случае (для фиксации трёх необходимых условий), вторая степень - это минимально возможная)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #17 : Июнь 05, 2018, 01:04 »

Если использовать в качестве апроксимирующей функции полином, то в общем случае (для фиксации трёх необходимых условий), вторая степень - это минимально возможная)

Вот для меня как для не-специалиста ни в полиномах и их степенях, ни в физике вообще, есть (не)много непонятно, как же собственно произошел переход от интеграла от t1 до t2 (я так понимаю, "путь" там строится из кусочков) в выражения на рис.2 ?

Ну то есть идея вроде бы понятна - мы берем эту самую "апроксимирующую функцию" и с каким-то минимальным шагом получаем зависимости V от t и суммируем их. Но это же "процесс итерационный", то есть как бы нужен цикл, а там откуда ни возьмись - выражения с кубами и квадратами... Непонятно (с).

Да и загадкой остается, откуда же функция то на свет явилась, если ее нет в начальных условиях? То есть какая задача в итоге решается? Исходная или мнимая?
« Последнее редактирование: Июнь 05, 2018, 01:09 от Racheengel » Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #18 : Июнь 05, 2018, 08:14 »

Да и загадкой остается, откуда же функция то на свет явилась, если ее нет в начальных условиях? То есть какая задача в итоге решается? Исходная или мнимая?
Строго говоря - мнимая Улыбающийся Пожуем простой пример: известны расстояния (от начала пути) которые проходит объект (их менять нельзя)

s = { 0, 10, 40, 100 };  // 4 точки, длина пути 100

Теперь юзверь говорит: хочу чтобы весь путь был пройден напр за 10 сек, начальная скорость ноль, конечная напр 50. Рассчитайте время и скорости в двух средних точках (в первой и последней они заданы)

Пройти с постоянной скоростью нельзя, хотя  бы потому заданы разные начальная и конечная. Ладно, пытаемся пройти с постоянным ускорением. Тоже ни фига не выходит

v = v0 + a * t;     // v = 50, v0 = 0, t = 10, отсюда ускорение  a = 5
S = a * t * t / 2;  // S = 100, t = 10, отсюда ускорение  a = 2

Т.е. скорости первых 3 точек мы-то выстроим по прямой, но до последней или не дотянемся или она вообще окажется сзади.

Отсюда вывод - надо каким-то образом задать закон (форму) изменения скорости. Да, юзверь об этом ничего не говорил - ну так это и не его дело. Напрашивается квадратичный, его и берем

v = a * t * t + b * t + v0;

Где a - второе ускорение, b - первое. Ну и дальше песня как эти коэффициенты найти

а там откуда ни возьмись - выражения с кубами и квадратами... Непонятно (с).
Хотя я чаще сталкиваюсь с математикой и физикой - мне тоже не очень понятно  Улыбающийся
Чего там тижаловатого в трёх картинках со школьными выкладками?
Ну строго говоря - первого семестра ВУЗа. Надо все-таки помягче, люди это видели/знали много лет назад (в лучшем случае), поэтому больше пояснений (пусть "очевидных") будет к месту.

Да, и я наконец понял с "третьей точкой". Надо сформулировать так

- найти ур-е параболы проходящей через 2 заданные точки причем такой что интеграл от нее (на известном интервале) был равен заданному.

Поэтому 3-я точка здесь наоборот, НЕ нужна
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #19 : Июнь 05, 2018, 10:29 »

Макс прав, решений тут может быть бесконечное множество, но имхо тут уже пошел отход от сути в дебри матанов Улыбающийся
А почему бы не разбить задачу на конечные отрезки (например, на 2 - от 0 до 40 и от 40 до 100), и выполнять расчет ускорений отдельно? Получим 2 решения, но ведь в условии и не сказано, насколько "гладким" должно быть движение?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #20 : Июнь 05, 2018, 10:33 »

Цитировать
Ну и дальше песня как эти коэффициенты найти
В смысле легко или сложно?

скорость и координаты от времени:
v(t) = a * t * t + b * t + v0
x(t) = a * t^3 / 3 + b * t^2 / 2 + v0 * t

b =( v2 - a*t2 - v0 ) / t
S/t = a*t2 / 3 + b * t / 2 + v0 * t
S/t = a*t2 / 3 + ( v2 - a*t2 - v0 ) / t * t / 2 + v0 * t
S/t = a*t2 / 3 + ( v2 - a*t2 - v0 ) / 2 + v0 * t
S/t = - a*t2 / 6 + v2/2 -v0/2 + v0 * t
a = ( -S / t + v2 / 2 - v0 / 2 + v0 * t ) * 6 / t2

p.s. Вообще если брать более практичный вариант, мне кажется машина должна ехать с учетом ограничений скорости и множеством других ограничений... График ускорения будет разрывная функция - точнее множество разных функций на разных участках, длинна которых будет определяться начальными условиями.
Записан
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #21 : Июнь 05, 2018, 10:50 »

Точнее даже не так, машина разгониться и будет ехать по спидлимиту на всем протяжении дороги, если будет время в запасе - срежет скорость чтобы экономить топливо(или будет нарушать, если времени мало) . Если времени будет слишком много, будет пить кофе на заправках.

просто езда с постоянным движением педали газа не очень реальна.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #22 : Июнь 05, 2018, 11:37 »

Макс прав, решений тут может быть бесконечное множество, но имхо тут уже пошел отход от сути в дебри матанов Улыбающийся
Конечно прав, но никто и не утверждал обратное Улыбающийся И то не дебри еще, а так, "3 сосны"

А почему бы не разбить задачу на конечные отрезки (например, на 2 - от 0 до 40 и от 40 до 100), и выполнять расчет ускорений отдельно? Получим 2 решения, но ведь в условии и не сказано, насколько "гладким" должно быть движение?
Ну получим ту же задачу только с меньшим числом точек. А если речь о подстройке 2-3 точек - то есть редактор где можно это делать интерактивно.

Вероятный запрос юзера (аттач)
Цитировать
Да, вот вы сделали красную кривую, спасибо. Да, я понимаю что прямая здесь не выйдет. Но мне бы хотелось гибко менять "форму", см зеленую и синюю  кривые
m_ax предлагает брать полиномы высших порядков. Какие? И как юзер будет "управлять формой"? Не, я конечно понимаю что "теоретический интерес" исчерпан, структура/метод решения тот же самый. Но все-таки ...

Update: прочитал свой же пост выше и подумал - а что тут военного? Ну возьмем третье ускорение, вот у него коэффициент свободен и может задаваться юзером. СЛАУ остается 2х2. Вот только как этот коэффициент втихаря подстроить (от юзеровского ввода) чтобы график не "вилял"?
« Последнее редактирование: Июнь 05, 2018, 11:46 от Igors » Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #23 : Июнь 05, 2018, 11:57 »

Цитировать
Точнее даже не так, машина разгониться и будет ехать по спидлимиту на всем протяжении дороги, если будет время в запасе - срежет скорость чтобы экономить топливо(или будет нарушать, если времени мало) . Если времени будет слишком много, будет пить кофе на заправках.

просто езда с постоянным движением педали газа не очень реальна.

А откуда такая привязка конкретно к случаю движения машины? Может igors решает проблему полёта пьяного Карлсона? Улыбающийся Кто его знает, что у него в голове)

Цитировать
Update: прочитал свой же пост выше и подумал - а что тут военного? Ну возьмем третье ускорение, вот у него коэффициент свободен и может задаваться юзером. СЛАУ остается 2х2. Вот только как этот коэффициент втихаря подстроить (от юзеровского ввода) чтобы график не "вилял"?
 
С точки зрения юзера, мне, лично, было бы гораздо нагляднее задавать (и редактировать) график зависимости скорости от пройденного пути - это интуитивней. А не скорости от времени..
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #24 : Июнь 06, 2018, 06:14 »

А откуда такая привязка конкретно к случаю движения машины? Может igors решает проблему полёта пьяного Карлсона? Улыбающийся Кто его знает, что у него в голове)
Есть 3D объект, настройка траектории его движения (в пр-ве) - своя песня (сплайны и все такое). Термин "velocity" (control) означает упр-е скоростью НЕ меняя траектории. А насколько пьян Карлсон - решает юзер, мое дело дать ему тулзы.

С точки зрения юзера, мне, лично, было бы гораздо нагляднее задавать (и редактировать) график зависимости скорости от пройденного пути - это интуитивней. А не скорости от времени..
Вот не надо умничать, вещь пусть не очень популярная, но совсем не редкая.

Ну возьмем третье ускорение, вот у него коэффициент свободен и может задаваться юзером. СЛАУ остается 2х2. Вот только как этот коэффициент втихаря подстроить (от юзеровского ввода) чтобы график не "вилял"?
Что имеете сказать по этому вопросу? Нужны еще пояснения (может проблема не ясна)?
« Последнее редактирование: Июнь 06, 2018, 06:17 от Igors » Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #25 : Июнь 06, 2018, 10:58 »

Цитировать
Что имеете сказать по этому вопросу? Нужны еще пояснения (может проблема не ясна)?
Так уже всё сказано. Вот алгоритм для кубической зависимости скорости:

v(t) = v0 + a*t + b*t*t + c*t*t*t;

Имеем 2 условия:

v2 = v0 + a*T + b*T*T + c*T*T*T,
S/T = v0 + a*T/2 + b*T*T/3 + c*T*T*T/4.

Находим коэффициенты a и b, которые в данном случае теперь зависят (причём линейно) от параметра c.

a = (6*f2 - 2*f1)/T,
b = (3*f1 - 6*f2)/(T*T),

f1 = v2 - v0 - c*T*T*T,
f2 = S/T - v0 - c*T*T*T/4.

Далее подставляем a и b в уравнение для скорости и ищем условие для параметра c, где скорость на интервале t [0, T] больше или равна нулю:

v0 + a*t + b*t*t + c*t*t*t >= 0

Это, так называемое неравенство с параметром, то, чего так боятся школьники на ЕГЭ.
Решая его, получаете возможный интервал изменения параметра c. Всё. юзеру даёте бубочку с мин и мак. значениями для c.
Пускай крутит туда-сюда)   
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #26 : Июнь 06, 2018, 13:19 »

А зачем вообще эта задача нужна?
Можно вообще в пределах некоторого ускорения разогнаться до средней скорости, потом длительное движение на средней скорости, потом ускорение до конечной скорости.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #27 : Июнь 06, 2018, 14:20 »

Можно вообще в пределах некоторого ускорения разогнаться до средней скорости, потом длительное движение на средней скорости, потом ускорение до конечной скорости.
Такой вариант технически сложнее в реализации.. Поскольку зависимость скорости - уже не гладкая функция, следовательно нужно постоянно думать об интервалах, где она меняет свою функ. зависимость и т.д.. Зачем?

Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #28 : Июнь 06, 2018, 16:40 »

Зачем?
Транспорт вряд ли будет по такой формуле ехать(есть более экономичные траектории). Хотя если задача связанна с созданием 3Д движка, практический смысл не так важен.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #29 : Июнь 06, 2018, 16:43 »

А зачем вообще эта задача нужна?
Можно вообще в пределах некоторого ускорения разогнаться до средней скорости, потом длительное движение на средней скорости, потом ускорение до конечной скорости.
Можно, только сделать это интерактивно (тягая точки графика) отнюдь не просто. На 3-4 точках еще можно, дальше засада. Изменив время и/или скорость в точке мы воздействуем на последующие, т.е. возникает эффект домино. Напр легко добиться прямой (разгон до средней скорости) для первых 2 точек, Но на следующем сегменте возникает ситуевина типа: пройти расстояние 10 с начальной скоростью 100 и конечной 100 (длительное на постоянной). Придется сократить время постоянного движения, что может и не устроить, или вернуться к первому сегменту чтобы иметь меньшую начальную на втором. И.т.д.
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 23.