Форум программистов, компьютерный форум, киберфорум
Программирование мультимедиа
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 05.11.2012
Сообщений: 24
1

Подскажите алгоритм пожалуйста

06.02.2013, 00:31. Показов 658. Ответов 6
Метки нет (Все метки)

Всем привет, подскажите пожалуйста алгоритм передвижения по окружности, очень туплю не первый час(

есть начальная точка(m_jump_start_pos), конечная точка, время за которое надо переместится

угловую скорость(m_angular_speed ) считаю исходя из 180 / время за которое надо переместится

C++
1
2
3
4
5
6
7
8
9
10
11
m_angle += m_angular_speed * time;
    
    Float xDistance = m_rad * Cos(m_angle);
                
    Float yDistance = m_rad * Sin(m_angle);
 
    Vector pos = m_jump_start_pos;
    pos.x += xDistance;
    pos.y += yDistance;
 
    SetObjectPosition(pos);
выше представленный код просто гоняет обьект по кругу - в точку назначения он не перемещается

радиус я задаю постоянный - вот подозреваю что где -то здесь что- то упускаю...

подскажите как правильно надо сделать
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2013, 00:31
Ответы с готовыми решениями:

Циклический алгоритм. Пожалуйста подскажите как это сделать
Циклический алгоритм. 1. Составить и отладить процедуру вычисления заданной функции y(x) для...

Подскажите, пожалуйста, алгоритм как можно расширить ключ?
Здравствуйте! Подскажите, пожалуйста, алгоритм как можно расширить ключ в delphi.

Подскажите алгоритм к примеру, пожалуйста ( Дано натуральное число n. Рассчитать P )
Сам пример такой: Дано натуральное число n. Рассчитать P = (1+1/1)*(1+1/2)2*...(1+1/n)n. Мой вопрос...

Подскажите пожалуйста, как правильно записать алгоритм для решения по методу Рунге-Кутта 4 порядка точности
Ввожу NDSolve ==2*u +u -1-2*x, u (0)==3, u'(0)==-2}, x, {x,0,1}, Method->"ExplicitRungeKutta",...

6
271 / 264 / 20
Регистрация: 27.02.2009
Сообщений: 694
Записей в блоге: 7
06.02.2013, 03:38 2
Цитата Сообщение от stan98 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
m_angle += m_angular_speed * time;
    
    Float xDistance = m_rad * Cos(m_angle);
                
    Float yDistance = m_rad * Sin(m_angle);
 
    Vector pos = m_jump_start_pos;
    pos.x += xDistance;
    pos.y += yDistance;
 
    SetObjectPosition(pos);
А условие достижения цели где?
0
0 / 0 / 1
Регистрация: 05.11.2012
Сообщений: 24
06.02.2013, 12:24  [ТС] 3
Движение прекращается когда выходит время - я не приводил код, там все работает

меня интересует именно изменение координат во времени

тут time - это время с прошедшего вызова
0
271 / 264 / 20
Регистрация: 27.02.2009
Сообщений: 694
Записей в блоге: 7
06.02.2013, 12:33 4
Объект из точки m_jump_start_pos должен переместится в конечную точку за некоторое время по окружности, т.е. имитация прыжка?

Если я правильно вас понял, то вы не учитываете смещение точки центра окружности на радиус и необходимость движения от угла PI до 0.
Должно быть примерно так:

C++
1
2
3
4
5
6
7
8
9
10
11
m_angle += m_angular_speed * time;
    
    Float xDistance = m_rad *(1 + Cos(PI - m_angle));
                
    Float yDistance = m_rad * Sin(m_angle);
 
    Vector pos = m_jump_start_pos;
    pos.x += m_rad + xDistance;
    pos.y += yDistance;
 
    SetObjectPosition(pos);
1
0 / 0 / 1
Регистрация: 05.11.2012
Сообщений: 24
06.02.2013, 12:45  [ТС] 5
Объект из точки m_jump_start_pos должен переместится в конечную точку за некоторое время по окружности, т.е. имитация прыжка?
ну можно и так сказать, это что-то вроде прыжка на диаметр окружности по длине, при этом перемещение самого обьекта происходит по радиусу этой окружности

Если я правильно вас понял, то вы не учитываете смещение точки центра окружности на радиус и необходимость движения от угла PI до 0
угол меняется - m_angle += m_angular_speed * time;
скорость расчитывается как 180 (ибо на расстояние диаметра перемещаемся - для этого и надо пол окружности описать) деленное на время движения

а вот радиус вы правы - я упустил, буду пробовать
0
271 / 264 / 20
Регистрация: 27.02.2009
Сообщений: 694
Записей в блоге: 7
06.02.2013, 12:48 6
Цитата Сообщение от stan98 Посмотреть сообщение
угол меняется - m_angle += m_angular_speed * time;
скорость расчитывается как 180 (ибо на расстояние диаметра перемещаемся - для этого и надо пол окружности описать) деленное на время движения

а вот радиус вы правы - я упустил, буду пробовать
Там вы еще не учли, что точка начала движения находится в точке с угловой координатой 180 градусов, а конечная в точке 0 градусов.
1
0 / 0 / 1
Регистрация: 05.11.2012
Сообщений: 24
06.02.2013, 12:56  [ТС] 7
Там вы еще не учли, что точка начала движения находится в точке с угловой координатой 180 градусов, а конечная в точке 0 градусов.
да, не учел - спасибо) хотя это и частный случай - его пока использую для тестов
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2013, 12:56

Дайте алгоритм, пожалуйста =))
Связной граф задан матрицей смежности. Написать программу для поиска всех циклов графа. Я уже сам...

Объясните пожалуйста алгоритм
Вычислите сумму с данной точностью е. Используйте указатели на функции как параметры: Сумма от 1...

Объясните, пожалуйста, алгоритм
Объясните, пожалуйста, построчно, следующий алгоритм, никак не разберусь, всю голову сломал....

Объясните алгоритм пожалуйста
#include <iostream> #include <cmath> int f(int, int, int, int, int); int main() { int a,...

Опишите пожалуйста алгоритм
Здравствуйте. Очень простой рекурсивный алгоритм, только вот, понять не могу, путаюсь. Объясните...

Объясните алгоритм пожалуйста
function sumelementmas(arr){ var sum=parseInt(arr); for (var i=1;i<arr.length;i++){ arr =...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru