![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Люди, помогите троешнику получить угол (в градусах) по заданым координатам X Y от нулевой точки. Помогите пожалуйста, нужно в разработке некой онлайновой игры (обезательно раскажу когда будет альфа версия).
|
|
#2
|
||||
|
||||
|
Совсем немного гугла и находим требуемое математика
![]() |
|
#3
|
||||
|
||||
|
Цитата:
![]() Вот мне училка по мату тоже самое написала, но у меня чото неработает, вот моя функция, отредактируйте пожалуйста: Код:
function GetAngleByXY(x,y,x2,y2: Integer): Integer; var ang: Extended; begin ang := 0; ang := x*x2+y*y2; ang := ang/(sqrt(sqr(x)+sqr(y))*sqrt(sqr(x2)+sqr(y2))); ang := cos(ang); Result := -round(ang); end; |
|
#4
|
||||
|
||||
|
Это не угол, а косинус угла между двумя векторами на плоскости. А в угол его уже ручками, ручками. А ты от косинуса снова берешь косинус
![]() |
|
#5
|
||||
|
||||
|
Я всё равно не понимаю, RadToDeg? ArcCos? Или ещё что-то? Напишите мне пожалуйста саму функцию, я отстану
![]() |
|
#6
|
|||
|
|||
|
Код:
implementation
uses Math;
{$R *.dfm}
const
x = 100.0;
y = 100.0;
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption:= Format('%.0f°', [RadToDeg(ArcTan2(y,x))]);
end; |