Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Из т.А в т.В двигаясь по Sin |
Автор: СерегаГоляков 2.10.2013, 15:17 | ||
Есть две известные точки х0,у0 и х1,у1 Необходимо из х0,у0 попасть в х1,у1, двигаясь змейкой. Максимум на что меня хватило это вычислить угол между точками и горизонталью:
И то вычисляется против часой стрелки, наверно для каждой четверти надо по своему считать. Подскажите формулки, пожалуйста. |
Автор: Pavia 2.10.2013, 15:51 |
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]; |
Автор: _Y_ 2.10.2013, 16:28 |
Задача поставлена как-то некорректно. По двум точкам можно провести чертову уйму синусоидал'ных змеек. Например, прямая, соединяющая 2 точки тоже может быт' описана синусом, но с очен' бол'шим периодом. Какая змейка нужна-то? |
Автор: Lipetsk 3.10.2013, 08:34 |
может быть речь о http://ru.wikipedia.org/wiki/%D0%95%D1%81%D1%82%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F? |
Автор: СерегаГоляков 5.10.2013, 05:38 |
Необходимо постепенно измерять координаты, чтобы в результате переместиться из точки А в точку В двигаясь не по прямой, а красиво змейкой. |
Автор: _Y_ 5.10.2013, 11:59 |
Ну, есил Вам все равно какая будет змейка, лишь бы красиво, то можно сделать очень просто. Примерно так.
|