Russian Qt Forum
Ноябрь 22, 2024, 19:58
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Алгоритмы
>
Расчет скоростей [решено]
Страниц:
1
2
[
3
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Расчет скоростей [решено] (Прочитано 21392 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Расчет скоростей
«
Ответ #30 :
Июнь 06, 2018, 17:02 »
Цитата: m_ax от Июнь 06, 2018, 10:58
Имеем 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.
Цитата: m_ax от Июнь 06, 2018, 10:58
Далее подставляем a и b в уравнение для скорости и ищем условие для параметра c, где скорость на интервале t [0, T] больше или равна нулю:
v0 + a*t + b*t*t + c*t*t*t >= 0
Это, так называемое неравенство с параметром, то, чего так боятся школьники на ЕГЭ.
Решая его, получаете возможный интервал изменения параметра c. Всё. юзеру даёте бубочку с мин и мак. значениями для c.
Пускай крутит туда-сюда)
Если мы сначала "взяли" какое-то значение "с" (т.е. ввод юзера), и на основании его вычислили a и b, потом из них вычисляем допустимый интервал "с" - то боюсь что этот интервал будет зависеть от того "с" что "взяли"
А значит каких-то конкретных чисел для "пределов" у меня нет. Также условие "скорость положительна" вызывает у меня сомнения, не лучше ли поставить условие "скорость монотонно" (убывает/возрастает)
Но приятно радует что стиль изложения стал намного лучше. Спокойно, просто, без выкрутасов. Спасибо за понимание
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Расчет скоростей
«
Ответ #31 :
Июнь 06, 2018, 17:47 »
Цитировать
интервал будет зависеть от того "с" что "взяли"
А значит каких-то конкретных чисел для "пределов" у меня нет.
Ничего подобнтго.. Интервал для c, где скорость больше нуля определяется только начальными условиями т.е. начальная и конечная скорости, полный путь и время. И его можно аналитически получить. Юзеру давайте по умолчанию положение бубочки на c=0.
Цитировать
"скорость положительна" вызывает у меня сомнения, не лучше ли поставить условие "скорость монотонно" (убывает/возрастает)
Нет, это монотонное убывание/возростание возможно только лишь в том случае, если окажется, что средняя скорость S/T будет лежать между начальной и конечной скоростями.
Более того, даже для квадратичной зависимости скорости никто не гарантирует, что на интервале [0, T] не будет точек поворота.
«
Последнее редактирование: Июнь 06, 2018, 19:16 от m_ax
»
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Расчет скоростей
«
Ответ #32 :
Июнь 07, 2018, 06:26 »
Цитата: m_ax от Июнь 06, 2018, 17:47
Более того, даже для квадратичной зависимости скорости никто не гарантирует, что на интервале [0, T] не будет точек поворота.
Да, верно, с монотонностью не выходит
Цитата: m_ax от Июнь 06, 2018, 10:58
Интервал для c, где скорость больше нуля определяется только начальными условиями т.е. начальная и конечная скорости, полный путь и время
Может и можно но не так как Вы предложили. Сначала Вы протаскиваете значение "с" "от фонаря"
Цитата: m_ax от Июнь 06, 2018, 10:58
Имеем 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 и b для расчета пределов. Типа "куда повернул - туда и вышло".
Ну ладно, то может я слишком много хочу. И запрос этот всего лишь "вероятный". Ясно что сходу его не решить, да и ур-е 4-й степени надо либку подобрать.
Всем спасибо за обсуждение
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Расчет скоростей [решено]
«
Ответ #33 :
Июнь 07, 2018, 08:20 »
Цитировать
Может и можно но не так как Вы предложили.
Именно так. Вы просто, похоже, не понли..
Цитировать
Сначала Вы протаскиваете значение "с" "от фонаря"
Опять нет. Мы выражаем параметры a и b через c. При этом a и b - линейно зависят от c.
Подставляем a и b, как функции c в неравенство. Получаем линейное неравенство относительно c, где t - параметр. Никаких a и b там уже нет!
Решаем его, определяя границы для c, таким образом, чтоб при любых значениях t [0, T] это неравенств выполнялось.
Этот интервал [c_min, c_max] будет зависеть только лишь от T, S, v0, v2. Всё!
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Расчет скоростей [решено]
«
Ответ #34 :
Июнь 07, 2018, 08:58 »
Цитата: m_ax от Июнь 07, 2018, 08:20
Опять нет. Мы выражаем параметры a и b через c. При этом a и b - линейно зависят от c.
Ааа! Дошло! Спасибо.
Но условие V >= 0 все-таки хиленькое. Оно и на просто квадратичной может не выполняться - ну обрезаю до нуля, лучшего не видно. И да, по условию скорость только положительная, хотя сам объект может двигаться в противоположном напр-и - это учитывается траекторией.
Спасибо
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Расчет скоростей [решено]
«
Ответ #35 :
Июнь 07, 2018, 10:14 »
Цитата: m_ax от Июнь 07, 2018, 08:20
Этот интервал [c_min, c_max] будет зависеть только лишь от T, S, v0, v2. Всё!
Если ускорение и скорость неограниченны то с - может любое значение приимать вплоть до бесконечности. (чисто физически )
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Расчет скоростей [решено]
«
Ответ #36 :
Июнь 07, 2018, 10:32 »
Цитата: deMax от Июнь 07, 2018, 10:14
Цитата: m_ax от Июнь 07, 2018, 08:20
Этот интервал [c_min, c_max] будет зависеть только лишь от T, S, v0, v2. Всё!
Если ускорение и скорость неограниченны то с - может любое значение приимать вплоть до бесконечности. (чисто физически )
Можно, конешно, любое c вставить, только вот никто не гарантирует вам, что скорость не сменит знак на пути s. Т.е. не будет точек поворота..
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Расчет скоростей [решено]
«
Ответ #37 :
Июнь 07, 2018, 10:56 »
Цитата: m_ax от Июнь 07, 2018, 10:32
Можно, конешно, любое c вставить, только вот никто не гарантирует вам, что скорость не сменит знак на пути s. Т.е. не будет точек поворота..
Так они и так есть, напр при v0 = v1 = 0
Немного сменим тему. Там есть еще "скорость на сегменте", т.е. 2 точки не так себе "соединяются прямой", а рисуется честная аналитическая кривая. Она вычисляется полиномом 5-й(?) степени, т.е. задаются
1) Длина пути между 2 точками
2) Начальные и конечные скорости
3) Начальные и конечные ускорения
В полином этот я, правду сказать, не вникал, работает - и ладно. Понятно он дает интеграл чтобы покрыть путь по времени. У юзера есть ручки (контролы на графе) для установки ускорения.
И вот тут у юзера начинают течь слюни. В одной проге (крутой) он видел что "ручки" могут быть короче/длиннее, это дает больший контроль кривизны на сегменте. Ну ясное дело - второе ускорение (2 штуки), у нас его нет. В общем, "я, Вань, такую же хочу". Что посоветуете ?
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Расчет скоростей [решено]
«
Ответ #38 :
Июнь 07, 2018, 11:05 »
Цитировать
Так они и так есть, напр при v0 = v1 = 0
Это точки остановки. Точки поворота это когда скорость меняет направление движения
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
deMax
Хакер
Offline
Сообщений: 600
Re: Расчет скоростей [решено]
«
Ответ #39 :
Июнь 07, 2018, 12:06 »
Цитата: Igors от Июнь 07, 2018, 10:56
И вот тут у юзера начинают течь слюни. В одной проге (крутой) он видел что "ручки" могут быть короче/длиннее, это дает больший контроль кривизны на сегменте. Ну ясное дело - второе ускорение (2 штуки), у нас его нет. В общем, "я, Вань, такую же хочу". Что посоветуете ?
уравнение 4 степени тоже решается. Можно сюда и других функций добавить, sin, log... в принципе и решать можно подбором значений(при делении уже точность теряется), ну или математический пакет для решения уравнений заюзать.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Расчет скоростей [решено]
«
Ответ #40 :
Июнь 07, 2018, 13:56 »
Цитата: m_ax от Июнь 07, 2018, 11:05
Это точки остановки. Точки поворота это когда скорость меняет направление движения
Ну да, при v0 = v1 = 0 получим параболу у = -kx^2 в верхней точке скорость перестает нарастать и начинает убывать
Цитата: deMax от Июнь 07, 2018, 12:06
уравнение 4 степени тоже решается. Можно сюда и других функций добавить, sin, log... в принципе и решать можно подбором значений(при делении уже точность теряется), ну или математический пакет для решения уравнений заюзать.
Давайте "точнее". Ни о каких синусах и/или логарифмах речь не идет. Есть 2 точки, дано
S - длина пути
T - время
v0, v1 - скорости (в точках)
a0, a1 - ускорения (в точках)
b0, b1 - вторые ускорения (в точках)
Все перечисленное - конкретные числа. Требуется найти ф-цию (коэффициенты) полинома
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Расчет скоростей [решено]
«
Ответ #41 :
Июнь 07, 2018, 14:39 »
общая формула скорости v(t) = a*t4 + b*t3 + c*t2 + d*t + e
v1 = a*t4 + b*t3 + c*t2 + d*t + v0
a1 = 4a*t3 + 3b*t2 + 2c*t + a0
b1 = 12a*t2 + 6b + b0
из формулы:
e = v0 ( для нулевого времени)
d = a0
c = b0/2
осталось a, b найти.
p.s. если не секрет, а зачем это все нужно?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Расчет скоростей [решено]
«
Ответ #42 :
Июнь 08, 2018, 05:46 »
Цитата: deMax от Июнь 07, 2018, 14:39
общая формула скорости v(t) = a*t4 + b*t3 + c*t2 + d*t + e
Такой полином используется сейчас, второе ускорение он не учитывает. Вот вычисление коэффициентов
Цитировать
double org = S / T;
a = 6.0 * org - 3.0 * v0 - 3.0 * v1 - 0.5 * a0 + 0.5 * a1;
b = -15.0 * org + 8.0 * v0 + 7.0 * v1 + 1.5 * a0 - a1;
c = 10.0 * org - 6.0 * v0 - 4.0 * v1 - 1.5 * a0 + 0.5 * a1;
d = 0.5 * a0;
e = v0;
А скорость считается так
Цитировать
v = a * (t ^4) * 5 + b * (t ^ 3) * 4 + c * (t ^ 2) * 3 + d * t * 2 + e
Похоже каждый параметр добавляет степень. Без ускорения (стартовый пост) 2-я степень. Добавили a0 - 3-я, еще добавили a1 - 4-я. Со вторым(и) ускорением должна получиться 6-я степень
Цитата: deMax от Июнь 07, 2018, 14:39
p.s. если не секрет, а зачем это все нужно?
Что "все это"?
"Вообще" - упр-е скоростью объекта для которого юзер задал траекторию. Конкретно "для 2 точек" - ну так между точками тоже надо считать, там может быть сколь угодно длинный путь
И вот у меня впечатление, что никакие "книги", вылазки в гуглу, поиски "готовых решений" и.т.п. здесь совершенно не нужны
Просто записать ур-е нужной степени и найти коэффициенты. Это хорошо
Записан
Old
Джедай : наставник для всех
Online
Сообщений: 4350
Re: Расчет скоростей [решено]
«
Ответ #43 :
Июнь 08, 2018, 05:59 »
Цитата: Igors от Июнь 08, 2018, 05:46
И вот у меня впечатление, что никакие "книги", вылазки в гуглу, поиски "готовых решений" и.т.п. здесь совершенно не нужны
Просто записать ур-е нужной степени и найти коэффициенты. Это хорошо
Конечно не нужны. Книги, гугл... Достаточно зайти на prog.org.ru и спросить у
m_ax
. Все.
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Расчет скоростей [решено]
«
Ответ #44 :
Июнь 08, 2018, 09:07 »
Цитата: Igors от Июнь 08, 2018, 05:46
Просто записать ур-е нужной степени и найти коэффициенты. Это хорошо
Исходя из начального условия задачи, ничто не мешает вам добавить к вашему полиному любых других функций(например синусом можно добавить вибрацию...)
можно вообще на одном синусе задачу решить - движемся со средней скоростью(при этом скорость изменяетсмя от 0 до Vmax > v0 и v1 - границы подгоняем чтоб v0 и v1 совпали) - конечно это несколько странное решение, но начальному условию удовлетворяет(S t v0 v1).
А вообще мне ваша задача напоминает построение сплайна.
Записан
Страниц:
1
2
[
3
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...