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

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

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

Сообщений: 10164


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

Имеем 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 в уравнение для скорости и ищем условие для параметра c, где скорость на интервале t [0, T] больше или равна нулю:

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

Это, так называемое неравенство с параметром, то, чего так боятся школьники на ЕГЭ.
Решая его, получаете возможный интервал изменения параметра c. Всё. юзеру даёте бубочку с мин и мак. значениями для c.
Пускай крутит туда-сюда)   
Если мы сначала "взяли" какое-то значение "с" (т.е. ввод юзера), и на основании его вычислили a и b, потом из них вычисляем допустимый интервал "с" - то боюсь что этот интервал будет зависеть от того "с" что "взяли" Улыбающийся А значит каких-то конкретных чисел для "пределов" у меня нет. Также условие "скорость положительна" вызывает у меня сомнения, не лучше ли поставить условие "скорость монотонно" (убывает/возрастает)

Но приятно радует что стиль изложения стал намного лучше. Спокойно, просто, без выкрутасов. Спасибо за понимание
Записан
m_ax
Neo
******
Offline Offline

Сообщений: 1788



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

Цитировать
интервал будет зависеть от того "с" что "взяли"  Улыбающийся А значит каких-то конкретных чисел для "пределов" у меня нет.
Ничего подобнтго.. Интервал для c, где скорость больше нуля определяется только начальными условиями т.е. начальная и конечная скорости, полный путь и время. И его можно аналитически получить. Юзеру давайте по умолчанию положение бубочки на c=0.

Цитировать
"скорость положительна" вызывает у меня сомнения, не лучше ли поставить условие "скорость монотонно" (убывает/возрастает)
Нет, это монотонное убывание/возростание возможно только лишь в том случае, если окажется, что средняя скорость S/T будет лежать между начальной и конечной скоростями.
Более того, даже для квадратичной зависимости скорости никто не гарантирует, что на интервале [0, T] не будет точек поворота.
« Последнее редактирование: Июнь 06, 2018, 19:16 от m_ax » Записан

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

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

Сообщений: 10164


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

Более того, даже для квадратичной зависимости скорости никто не гарантирует, что на интервале [0, T] не будет точек поворота.
Да, верно, с монотонностью не выходит

Интервал для c, где скорость больше нуля определяется только начальными условиями т.е. начальная и конечная скорости, полный путь и время
Может и можно но не так как Вы предложили. Сначала Вы протаскиваете значение "с" "от фонаря"
Имеем 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
Neo
******
Offline Offline

Сообщений: 1788



Просмотр профиля
« Ответ #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
Джедай : наставник для всех
*******
Online Online

Сообщений: 10164


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

Опять нет. Мы выражаем параметры a и  b через c. При этом a и b - линейно зависят от c.
Ааа! Дошло! Спасибо.

Но условие V >= 0 все-таки хиленькое. Оно и на просто квадратичной может не выполняться - ну обрезаю до нуля, лучшего не видно. И да, по условию скорость только положительная, хотя сам объект может двигаться в противоположном напр-и - это учитывается траекторией.

Спасибо
Записан
deMax
Программист
*****
Offline Offline

Сообщений: 589



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

Этот интервал [c_min, c_max] будет зависеть только лишь от T, S, v0, v2. Всё!
Если ускорение и скорость неограниченны то с - может любое значение приимать вплоть до бесконечности. (чисто физически )
Записан
m_ax
Neo
******
Offline Offline

Сообщений: 1788



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

Этот интервал [c_min, c_max] будет зависеть только лишь от T, S, v0, v2. Всё!
Если ускорение и скорость неограниченны то с - может любое значение приимать вплоть до бесконечности. (чисто физически )
Можно, конешно, любое c вставить, только вот никто не гарантирует вам, что скорость не сменит знак на пути s. Т.е. не будет точек поворота..
Записан

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

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

Сообщений: 10164


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

Можно, конешно, любое c вставить, только вот никто не гарантирует вам, что скорость не сменит знак на пути s. Т.е. не будет точек поворота..
Так они и так есть, напр при v0 = v1 = 0

Немного сменим тему. Там есть еще "скорость на сегменте", т.е. 2 точки не так себе "соединяются прямой", а рисуется честная аналитическая кривая. Она вычисляется полиномом 5-й(?) степени, т.е. задаются

1) Длина пути между 2 точками
2) Начальные и конечные скорости
3) Начальные и конечные ускорения

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

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

Сообщений: 1788



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

Цитировать
Так они и так есть, напр при v0 = v1 = 0
Это точки остановки. Точки поворота это когда скорость меняет направление движения
Записан

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

Arch Linux Plasma 5
deMax
Программист
*****
Offline Offline

Сообщений: 589



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

И вот тут у юзера начинают течь слюни. В одной проге (крутой) он видел что "ручки" могут быть короче/длиннее, это дает больший контроль кривизны на сегменте. Ну ясное дело - второе ускорение (2 штуки), у нас его нет. В общем, "я, Вань, такую же хочу". Что посоветуете ?
уравнение 4 степени тоже решается. Можно сюда и других функций добавить, sin, log... в принципе и решать можно подбором значений(при делении уже точность теряется), ну или математический пакет для решения уравнений заюзать.
Записан
Igors
Джедай : наставник для всех
*******
Online Online

Сообщений: 10164


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

Это точки остановки. Точки поворота это когда скорость меняет направление движения
Ну да, при v0 = v1 = 0 получим параболу у = -kx^2 в верхней точке скорость перестает нарастать и начинает убывать

уравнение 4 степени тоже решается. Можно сюда и других функций добавить, sin, log... в принципе и решать можно подбором значений(при делении уже точность теряется), ну или математический пакет для решения уравнений заюзать.
Давайте "точнее". Ни о каких синусах и/или логарифмах речь не идет.  Есть 2 точки, дано

S - длина пути
T - время
v0, v1 - скорости (в точках)
a0, a1 - ускорения (в точках)
b0, b1 - вторые ускорения (в точках)

Все перечисленное - конкретные числа. Требуется найти ф-цию (коэффициенты) полинома
Записан
deMax
Программист
*****
Offline Offline

Сообщений: 589



Просмотр профиля
« Ответ #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
Джедай : наставник для всех
*******
Online Online

Сообщений: 10164


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

общая формула скорости 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-я степень
p.s. если не секрет, а зачем это все нужно?
Что "все это"? Улыбающийся "Вообще" - упр-е скоростью объекта для которого юзер задал траекторию. Конкретно "для 2 точек" - ну так между точками тоже надо считать, там может быть сколь угодно длинный путь

И вот у меня впечатление, что никакие "книги", вылазки в гуглу, поиски "готовых решений" и.т.п.  здесь совершенно не нужны  Улыбающийся Просто записать ур-е нужной степени и найти коэффициенты.  Это хорошо  Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3945



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

И вот у меня впечатление, что никакие "книги", вылазки в гуглу, поиски "готовых решений" и.т.п.  здесь совершенно не нужны  Улыбающийся Просто записать ур-е нужной степени и найти коэффициенты.  Это хорошо  Улыбающийся
Конечно не нужны. Книги, гугл... Достаточно зайти на prog.org.ru и спросить у m_ax. Все. Улыбающийся
Записан
deMax
Программист
*****
Offline Offline

Сообщений: 589



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

Просто записать ур-е нужной степени и найти коэффициенты.  Это хорошо  Улыбающийся
Исходя из начального условия задачи, ничто не мешает вам добавить к вашему полиному любых других функций(например синусом можно добавить вибрацию...)
можно вообще на одном синусе задачу решить - движемся со средней скоростью(при этом скорость изменяетсмя от 0 до Vmax > v0 и v1 - границы подгоняем чтоб v0 и v1 совпали) - конечно это несколько странное решение, но начальному условию удовлетворяет(S t v0 v1).

А вообще мне ваша задача напоминает построение сплайна.
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  

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