zamiana RADianów na DEG

0

Mam kąt alfa , ktory jest w RADianach , a chciałbym żeby był w stopniach.
Czy jest jakas funkcja zamieniejąca RADiany na DEG (stopnie)???????

Próbowałem zrobić :

alfaWdeg:=alfa*180/pi

Ale tutaj skoleji nie wiem jak zapisać pi , ponieważ musze mieć bardzo dużą dokładność , więc pi=3.141592654 mi nie wystarcza.
Może delphi ma wbudowane pi ????????

Zapewne to juz kiedys było ale w wyszzukiwarce wyskoczylo mi ponad 20tyś wyników :-/

0

użyj zmiennej typu Extended, miesci sie w niej 19-20 cyfr po przecinku. czyli spokojnie zapiszesz pi := 3.1415926535897932384626433832795

0

alfaWdeg:=alfa*pi/180

tak jest poprawnie!

0

Do USES dodaj Math
o PI nie musisz się troszczyć w Math jest zadeklarowane, niewiem z jaką dokładnością, ale powinno wystarczyć.
a konwersję zrobisz :

RadToDeg(x)

a zapis:
alfaWdeg:=alfa*180/pi
jest poprawny (przynajmniej tak wynika z komentarza w Math)
tym razem pułkownik Cezary się pomylił.

0

Do USES dodaj Math
o PI nie musisz się troszczyć w Math jest zadeklarowane, niewiem z jaką dokładnością, ale powinno wystarczyć.

Zapomnijcie o Math. Pi jest funkcją stałą zwracajacą wartość:
3.1415926535897932385
zadeklarowaną w module System (domyślnie dołączanym do projektu).
A z tego co się domyślam to jest to funkcja koprocesora FLDPI (ponieważ jest to funkcja to proponuję jednak zadeklarowanie zmienne i przypisanie jej Pi na początku to może trochę szybciej będzie).

0

no to czemu to działa dobrze? :)

procedure move_przod; //we go forward
begin
if (heading = -90) or (heading = 90) then //bez abs
begin
if heading = -90 then //safe forward
y := y - movespeed else
y := y + movespeed;
end else
begin
x := x - movespeedsin(gloppi/180);
z := z + movespeedcos(gloppi/180);
y := y + movespeedsin(headingpi/180);
end;
end;

procedure move_tyl; //we go back
begin
if (heading = -90) or (heading = 90) then //bez abs
begin
if heading = 90 then //safe backward
y := y - movespeed
else
y := y + movespeed;
end else
begin
x := x + movespeedsin(gloppi/180);
z := z - movespeedcos(gloppi/180);
y := y - movespeedsin(headingpi/180);
end;
end;

procedure move_left;
begin
X := X + movespeed*sin((glop+90)pi/180);
Z := Z - movespeed
cos((glop+90)*pi/180);
end;

procedure move_right;
begin
X := X - movespeed*sin((glop+90)pi/180);
Z := Z + movespeed
cos((glop+90)*pi/180);
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1