[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]
Угол в градусах
Не знаю, может есть путь легче, но я вижу только один. Пусть 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 реализовать через паскаль? И потом полученное в радианах значение правильно преобразовать в градусы? Или, может, есть способ проще?
Цитата: 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 реализовать через паскаль? И потом полученное в радианах значение правильно преобразовать в градусы? Или, может, есть способ проще?
Не знаю, может есть путь легче, но я вижу только один. Пусть 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 фкц.
скорее всего у вас тоже самое. Точность буит зависить от того как точнее задать (Пи). Ну а проще метода не найти
Для перевода из радиан в градуысы: 180*a/Pi (4-5-ый класс школы, тема пропорции)
В том то и дело, что угол вычисляется в пределах от -90 до 90 градусов. А он должен быть от 0 до 359(360 быть не может, так как это в данном случае 0). Допустим X=-15, Y=-15, следовательно точка B лежит в 3-ей четверти координатной плоскости. Y/X будет 1, то есть то же самое, что и если бы угол лежал в первой четверти. И arctan(1) будет равен Pi/2, то есть 45 градусов. А угол то на самом деле будет равен 225(180+45). Поэтому в вышенаписанный код нужно добавить условия, с помощью которых можно будет узнать, в какой четверти лежит точка B, и потом корректировать значения угла.