![]() |
360 Градусов
Код:
DX:=pointer_x-first_pointer_x; Можно ли вернуть угол отрезка в градусах от 0 до 360? Или от 0 до 180(-180) |
Ответ: 360 Градусов
не знаю что за мидлет и что за ToDegrees, atan2 сам по себе возвращает угол, возможно тебе надо ещё нормализовать DX и DY
|
Ответ: 360 Градусов
Зачем используете Atan2? Он служит для конвертирования прямоугольных координат в полярные.
Нужно использовать Atan, он как раз выдает угол от -pi/2 до pi/2 (в радианах). |
Ответ: 360 Градусов
Вложений: 1
Всё). Не могу больше). Не получается применить старые проверенные еще флешем коды... Не пойму в чем дело.
Как сделать полет снаряда через координаты двух точек?) Вроде того что на картинке. |
Ответ: 360 Градусов
1. определить тип аппроксимирующей кривой, описвающей траекторию.
2. вычислить праметры, задающие кривую 3. записать уравнения координат тела. 1. прямая линия. уравнение вида y(x)=kx+b 2. два параметра, две заданных точки y1=k*x1+b y2=k*x2+b решаем систему, находим k и b. 3. y(t)=yn+sin(a)*t x(t)=xn+cos(a)*t a=k, хn=x1, yn=y1 b нужно для решения системы (2), в дальнейшем компенсируется значениями (xn;yn), т.к. характеризует вертикальный сдвиг прямой (перенос по оси 0Y). [можно перписать в виде y(t)=xn+sin(a)*t+b]. 3.1. а можно сразу выразить как atan2[(y2-y1),(x2-x1)]. Внимание: в разных языках значение первого и второго аругмента может быть инвертировано (т.е. где-то f(x,y), а где-то f(y,x) - обязательно прочесть инструкцию). Примечание: надо отметить, что знак зависимой части в уравнении для ординаты, завист от ориентации вертикальной оси интерфейса вывода (как правило, не совпадает с классической математической). Примечание: ряд задач может требовать рекурентное задние уравнений (3). |
Ответ: 360 Градусов
Цитата:
Код:
DelthaY=y2-y1 Первые два метода еще не пробовал, спасибо. Надо над ними подумать. |
Ответ: 360 Градусов
Вложений: 1
Во вложении jar файл с той фигней которую он мне выдает.
З.ы. Извините, но нормальный выход из приложения еще не готов). |
Ответ: 360 Градусов
Цитата:
С точки зрения матаматики более точно было бы ax+by+c=0 Получаются 2 уравнения с 3 неизвестными, но они решаются. Второй вариант-сделать вектор из первой точки во вторую. Процедура даёт координаты точки(тебе ведь точка нужна?) на векторе, на расстоянии K от x1,y1 procedure xy_point(x1,y1,x2,y2,k:integer); var L,mn:real; x,y:real; begin //находим длину вектора L:=sqrt(sqr(x1-x2)+sqr(y1-y2)); //смотрим во сколько раз длина больше нужной mn:=K/L; x:=x1+(x2-x1)*mn; y:=y1+(y2-y1)*mn; //х и у - координаты точки, делай с ними что хочешь) end; Инструкция: запусти несколько раз, увеличивая k - точка полетит от x1,y1 до (и дальше тоже) x2,y2. При отрицательном К полетит в другую сторону. |
Ответ: 360 Градусов
Спасибо. Попробую с точкой. Но вообще так мне нужна скорость. Мой метод основывается на поиске множителя скорости от 0 до 1 с помощью синуса угла между первой и второй точкой. Но не получилось. Угол не тот выдает.
|
Ответ: 360 Градусов
Вы будете смеяться но я нашел изящное до тупости решение проблемы.
Код:
YSpeed:=(pointer_y-first_pointer_y)/10; |
Ответ: 360 Градусов
Код:
Angle=Atan2(DelthaY,DelthaX)*180/Pi Код:
Angle=Atan2(DelthaY,DelthaX) Цитата:
2.Не "более точно", а в "каноническом виде" |
Ответ: 360 Градусов
Это решение(Предыдущее моё с арктангенсом) было в книге Джоба Макара по флешу. Использовал я его просто как проверенное. В любом случае всем спасибо).
|
Ответ: 360 Градусов
Ну я же написал
Цитата:
|
Ответ: 360 Градусов
Если честно мне это ни о чем не говорит. Например?
|
Часовой пояс GMT +4, время: 19:11. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot