Форум программистов, компьютерный форум, киберфорум
Геометрия
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1980 / 836 / 115
Регистрация: 01.10.2012
Сообщений: 5,204
Записей в блоге: 2

Движение по кривой

31.10.2024, 17:01. Показов 2002. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день

Есть рекуррентное вычисление точек кривой (для простоты на плоскости). Псевдокод

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// исходные данные
Point position(0, 0);  // начальная точка кривой
Vector speed(1, 0);   // начальный вектор скорости
float dt = 1.0f / 60;   // интервал времени
float deviation = 0.2f;  // амплитуда отклонения
bool normalizeFlag = false; // флаг постоянной скорости
Container out_curve;   // массив/контейнер посчитанных точек 
 
// вычисление N точек кривой
for (int i = 0; i < N; ++i) {
 
// вектор отклонения перпендикулярен текущей скорости
 Vector dev = Vector(-speed.y, speed.x).normalized() * deviation;  
 
// меняем вектор скорости 
 speed += dev;
 if (normalizeFlag)
  speed = speed.normalized();
  
// получаем и сохраняем новую точку кривой
 position += speed * dt;
 out_curve.push_back(position);
}
Или словами: на каждом шаге добавляем к вектору скорости смещение в перпендикулярном направлении и заданной величины/модуля. В результате кривая описывает дугу (а может спираль или окружность)

Вопрос: а можно ли аналитически находить скорость и путь (позицию) для заданного значения времени t ?

Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.10.2024, 17:01
Ответы с готовыми решениями:

Движение по кривой
Объект движется от точки V0 (x0, y0) к точке V1 (x1, y1). Движение объекта разбито на n кадров. Первый кадр - 0 последний n. Чтобы...

Движение по кривой
Как сделать анимацию движения объекта по кривой?

Движение по кривой Безье
Здравствуйте. Я пишу планировщик движения и столкнулся с проблемой: некоторые участки подразумевают слишком резкие смены направления. Я...

22
27 / 64 / 4
Регистрация: 10.06.2023
Сообщений: 1,054
10.11.2024, 19:38
Студворк — интернет-сервис помощи студентам
Возвращаясь к начальному постеру. То, что я строю, совпадает с текстом начального постера с двумя не принципиальными отличиями. Первое, ваша операция с вектором скорости описывает просто поворот вектора, поэтому я просто ввел угол поворота. Второе отличие, начальные условия. Мне удобнее было взять не начало координат, чтобы разобраться со знаками в уравнении движения.
Ответ на вопрос о аналитической форме траектории: это правильный многоугольник, вписанный в окружность.
0
1980 / 836 / 115
Регистрация: 01.10.2012
Сообщений: 5,204
Записей в блоге: 2
11.11.2024, 15:38  [ТС]
Первый аттач. Пересчитываем deviation (модуль перпендикулярного отклонения) в зависимости от шага по времени (по углу)
C++
1
double deviation2 = tan(atan(deviation) * dt / 0.0333);
Также попечатал
dt = 0.0333333 deviation = 0.2
dt = 0.0166667 deviation = 0.0990195
dt = 0.01 deviation = 0.059288
Практически линейно. Ну ясно, на малых углах синус ~ тангенс ~ угол в радианах

Задать радиус поворота. Поразмыслив, решил что это неудачная затея. Лучше дать юзеру возможность управлять "крутизной" поворота, т.е. менять deviation. В симуляции типовое решение приложить силу. Для единичной массы вектор силы = вектору ускорения
C++
1
double deviation2 = acceleration * dt / 2;
Рез-т = второй аттач

Неясно почему расхождение все-таки заметно и пути не симметричны по X. Код простой, все-таки умудрился насвистеть? Ну "принципиальной" разницы не видно
Миниатюры
Движение по кривой   Движение по кривой  
0
27 / 64 / 4
Регистрация: 10.06.2023
Сообщений: 1,054
11.11.2024, 15:48
Поиграйте начальными условиями. Удобно смотреть при грубом шаге, 10-12 за оборот У меня начальная точка в середине одной из хорд.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.11.2024, 15:48

Движение pictureBox по кривой g.DrawCurve
Всем привет. Есть кривая, которая строится с помощью g.DrawCurve. По траектории этой кривой нужно чтобы двигался объект pictureBox. Пока...

Движение объекта по кривой (по астроиде)
Здравствуйте, у меня такая проблема. Движение объекта по кривой, а именно Астероиде...

Движение по траектории (кривой Безье)
Здравствуйте, уважаемые форумчане! Построил кривую Безье по 3-м точкам в HTML Canvas. Также, задал уравнение движения по кривой с помощью...

Движение 3d объекта по кривой, не зная ее уравнения
Добрый день) Есть проект на c#, написанный с применением OpenGL. В нем есть машина и дорога (кривая замкнутая линия, чем-то похожая на...

Движение трёхгранника Френе по пространственной кривой в maple
Добрый день Всем!!! Помогите пожалуйста сделать анимацию движения трёхгранника Френе по пространственной кривой в maple. То есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru