Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2010, 12:54   #1
KoBRaAndrey
Форумчанин
 
Регистрация: 01.10.2009
Сообщений: 302
По умолчанию Угол поворота

Нужно вычислить угол поворота, есть мои координаты XY и координаты цели.

Пример:
Мой:
-1950.26 - x
-4258.09 - y
Цель:
-2330.00 - x
-4144.75 - y
Угол поворота должен выйти 163

Судя по всему тут нужен косинус и синус но у меня не выходит Помогите
KoBRaAndrey вне форума Ответить с цитированием
Старый 29.08.2010, 14:19   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

http://gis-lab.info/qa/aveazimuth.html
puporev вне форума Ответить с цитированием
Старый 29.08.2010, 14:53   #3
KoBRaAndrey
Форумчанин
 
Регистрация: 01.10.2009
Сообщений: 302
По умолчанию

А на Delphi?
KoBRaAndrey вне форума Ответить с цитированием
Старый 29.08.2010, 15:23   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var x1,y1,x2,y2,dx,dy,dist,dxa,beta,angle,sc:real;
    gr,mn:integer;
begin
x1:=Strtofloat(Edit1.Text);
y1:=Strtofloat(Edit2.Text);
x2:=Strtofloat(Edit3.Text);
y2:=Strtofloat(Edit4.Text);
dx:= x1 - x2;
dy:= y1 - y2;
dist:= sqrt((dx*dx) + (dy*dy));
dxa:= abs(dx);
beta:= arccos(dxa / dist)*180/pi;
Edit5.Text:=FloattostrF(beta,fffixed,5,2);
if (dx > 0) then
 if (dy < 0) then  angle:= 270 + beta
 else angle:= 270 - beta
else if (dy < 0) then angle:= 90 - beta
 else angle:= 90 + beta;
gr:=trunc(angle);
mn:=trunc(frac(angle)*60);
sc:=frac(frac(angle)*60);
Edit5.Text:=inttostr(gr)+' gr '+inttostr(mn)+' min '
                      +floattostrF(sc,ffFixed,3,1)+' sec';
end;
Только по вашим данным азимут будет не 163, а 106 градусов, проверьте на калькуляторе или графически.
puporev вне форума Ответить с цитированием
Старый 29.08.2010, 15:54   #5
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Ахтунг, puporev
Цитата:
Сообщение от AutoCAD
В компьюторе угол отсчитывается от вектора OX против часовой стрелки.
Sibedir вне форума Ответить с цитированием
Старый 29.08.2010, 16:29   #6
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Код:
uses
  Math;

...

procedure TForm1.Button1Click(Sender: TObject);
var
  x1, y1, x2, y2, dx, dy, beta: Real;
begin
  x1 := StrToFloat (Edit1.Text);
  y1 := StrToFloat (Edit2.Text);
  x2 := StrToFloat (Edit3.Text);
  y2 := StrToFloat (Edit4.Text);
  dx := x2 - x1;
  dy := y2 - y1;
  beta := ArcTan2 (dy, dx) * 180 / pi;
  Edit5.Text := FloatToStrF (beta, ffFixed, 5, 2);
end;
Sibedir вне форума Ответить с цитированием
Старый 29.08.2010, 17:16   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
В компьюторе угол отсчитывается от вектора OX против часовой стрелки.
Да типа слышал где-то про это, но я подумал что нужно реальный азимут, типа как в артиллерии.
puporev вне форума Ответить с цитированием
Старый 29.08.2010, 18:08   #8
KoBRaAndrey
Форумчанин
 
Регистрация: 01.10.2009
Сообщений: 302
По умолчанию

Sibedir - спасибо! Все отлично работает, то что нужно!
puporev спасибо! да я делаю куча китайский артиллерий :D
Всем по +
KoBRaAndrey вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятки с DirectX (матрица поворота, камера, матрица проекции) ROD Общие вопросы C/C++ 2 17.09.2010 17:00
УГОЛ-фи DRAgon™ Паскаль, Turbo Pascal, PascalABC.NET 3 19.08.2010 13:33
Программа динамического поворота 3D-графика функции (delphi) Казанцев Андрей Помощь студентам 2 13.04.2009 19:57
Процедура поворота изображения Илья PHoeNiX Общие вопросы Delphi 3 08.06.2008 13:59
Угол по тангенсу AVer Общие вопросы Delphi 9 01.02.2007 12:47