Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Угол в градусах

10K
21 ноября 2006 года
ost-andrew
19 / / 24.01.2006
Столкнулся с такой проблемой. Есть две точки A и B на координатной плоскости XY. У A координаты всегда (0; 0), у B(X; Y) - задаются пользователем(-100<X<100, -100<Y<100). Нужно найти угол(в градусах), который образует прямая AB с осью OX. Пусть этот угол будет q.
Не знаю, может есть путь легче, но я вижу только один. Пусть AB - будет гипотенуза прямоугольного треугольника ABC, где С принадлежит оси OX, и BC перпендикулярно OX. Координаты C будут известны (X; 0).
AC=X, BC=Y. По теореме пифагора найдем AC. cos q будет равен BC/AC. q будет равен arccos(BC/AC). Можно было, конечно, пойти и через sin, tg, ctg, но это не так важно. Как arrccos реализовать через паскаль? И потом полученное в радианах значение правильно преобразовать в градусы? Или, может, есть способ проще?
269
22 ноября 2006 года
Greenering
892 / / 04.02.2003
Цитата: ost-andrew
Столкнулся с такой проблемой. Есть две точки A и B на координатной плоскости XY. У A координаты всегда (0; 0), у B(X; Y) - задаются пользователем(-100<X<100, -100<Y<100). Нужно найти угол(в градусах), который образует прямая AB с осью OX. Пусть этот угол будет q.
Не знаю, может есть путь легче, но я вижу только один. Пусть AB - будет гипотенуза прямоугольного треугольника ABC, где С принадлежит оси OX, и BC перпендикулярно OX. Координаты C будут известны (X; 0).
AC=X, BC=Y. По теореме пифагора найдем AC. cos q будет равен BC/AC. q будет равен arccos(BC/AC). Можно было, конечно, пойти и через sin, tg, ctg, но это не так важно. Как arrccos реализовать через паскаль? И потом полученное в радианах значение правильно преобразовать в градусы? Или, может, есть способ проще?


Мой старенький пас понимает только arctan фкц.
скорее всего у вас тоже самое. Точность буит зависить от того как точнее задать (Пи). Ну а проще метода не найти

547
22 ноября 2006 года
Hydra
488 / / 20.06.2006
Используй, как было сказано, arctan(Y/X). Только помни, что при X=0 угол Pi/2
Для перевода из радиан в градуысы: 180*a/Pi (4-5-ый класс школы, тема пропорции)
273
22 ноября 2006 года
3A3-968M
1.2K / / 22.12.2005
Код:
[FONT=Courier New]program angle;
uses crt;[/FONT]
[FONT=Courier New][/FONT]
[FONT=Courier New]var[/FONT] [FONT=Courier New]X, Y, Tg, result : Real;
begin
     clrscr;
     write([COLOR=blue]'X = '[/COLOR]);
     readln(X);
     write([COLOR=blue]'Y = '[/COLOR]);
     readln(Y);
     Tg := Y / X;
     result := arctan(Tg) * [COLOR=blue]180[/COLOR] / Pi;
     writeln([COLOR=blue]'Angle = '[/COLOR], result : [COLOR=blue]4[/COLOR] : [COLOR=blue]1[/COLOR], [COLOR=blue]' grad'[/COLOR]);
     repeat until keypressed;
end.[/FONT]
10K
22 ноября 2006 года
ost-andrew
19 / / 24.01.2006
Спасибо, только всё же поправлю:
В том то и дело, что угол вычисляется в пределах от -90 до 90 градусов. А он должен быть от 0 до 359(360 быть не может, так как это в данном случае 0). Допустим X=-15, Y=-15, следовательно точка B лежит в 3-ей четверти координатной плоскости. Y/X будет 1, то есть то же самое, что и если бы угол лежал в первой четверти. И arctan(1) будет равен Pi/2, то есть 45 градусов. А угол то на самом деле будет равен 225(180+45). Поэтому в вышенаписанный код нужно добавить условия, с помощью которых можно будет узнать, в какой четверти лежит точка B, и потом корректировать значения угла.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог