Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Из т.А в т.В двигаясь по Sin, как двигаться по синусу 
:(
    Опции темы
СерегаГоляков
Дата 2.10.2013, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Всё супер :)
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 26.4.2010
Где: НСК

Репутация: нет
Всего: нет



Есть две известные точки х0,у0 и х1,у1

Необходимо из  х0,у0 попасть в х1,у1, двигаясь змейкой.

Максимум на что меня хватило это вычислить угол между точками и горизонталью:

Код

double A = Math.Atan2( y-y0, x - x0) * 180/ Math.PI ;
A = (A < 0) ? A + 360 : A;

И то вычисляется против часой стрелки, наверно для каждой четверти надо по своему считать.

Подскажите формулки, пожалуйста.
--------------------
Список всех полезных программ в ОДНОЙ программеhttps://sites.google.com/site/coolprogramms...latnyh-programm...Пьяные белазисты в карьереhttp://www.youtube.com/watch?v=6FGNGMwxJZ4
PM WWW   Вверх
Pavia
Дата 2.10.2013, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



v=(x1-x0)/(t1-t0); // вычисляем скорость от заданного времени
Alfa=Math.Atan2( y1-y0, x1 - x0); // вычисляем угол поворота.

dt=(GetTickCount()-LastTickCount)/1000; // измеряем время, так как оно течёт не равномерно

// Вычисляем наши координаты относительно точки старта.
p.x=v*dt;
p.y=sin(x);

Вращаем относительно этой точки

Rotate(p,Alfa);

// Переносим систему координат из системы объекта в мировую.
p.x=p.x+x0;
p.y=p.y+y0;

t=t+dt;
if (t>=t1) { // проверяем время
p.x=x1;
p.y=y1;

  

Здесь
Rotate(p,Alfa);
//Обычное вращение точки относительно начала координат.
// Заполняем матрицу вращения
M[0,0]=+cos(Alfa); M[0,1]=-Sin(Alfa);
M[1,0]=+Sin(Alfa); M[1,1]=+cos(Alfa);
// запоминаем временную переменную.
tempP=p;
// Умножаем матрицу на вектор 
p.x:=tempP.x*M[0,0]+tempP.y*M[1,0];
p.y:=tempP.x*M[0,1]+tempP.y*M[1,1];


Это сообщение отредактировал(а) Pavia - 2.10.2013, 15:52
PM MAIL   Вверх
_Y_
Дата 2.10.2013, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Задача поставлена как-то некорректно. По двум точкам можно провести чертову уйму синусоидал'ных змеек. Например, прямая, соединяющая 2 точки тоже может быт' описана синусом, но с очен' бол'шим периодом.

Какая змейка нужна-то?


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Lipetsk
Дата 3.10.2013, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 28.1.2009
Где: Липецк

Репутация: 2
Всего: 5



PM   Вверх
СерегаГоляков
Дата 5.10.2013, 05:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Всё супер :)
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 26.4.2010
Где: НСК

Репутация: нет
Всего: нет



Необходимо постепенно измерять координаты, чтобы в результате переместиться из точки А в точку В двигаясь не по прямой, а красиво змейкой.
--------------------
Список всех полезных программ в ОДНОЙ программеhttps://sites.google.com/site/coolprogramms...latnyh-programm...Пьяные белазисты в карьереhttp://www.youtube.com/watch?v=6FGNGMwxJZ4
PM WWW   Вверх
_Y_
Дата 5.10.2013, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Ну, есил Вам все равно какая будет змейка, лишь бы красиво, то можно сделать очень просто. Примерно так.
  • Разворачиваете систему координат так, чтобы обе точки лежали на оси X.
  • Строите в этой новой системе координат синусоиду, выбрав ее период так, чтобы между двумя точками поместилось целое число полупериодов.
  • Разворачиваете построенную синусоиду в исходную систему координат.
  • Выводите результат поточечно - плавно и красиво.



--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0631 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.