Angles (geometric), normalization and conversion: Difference between revisions
Content added Content deleted
MaiconSoft (talk | contribs) (Added Delphi example) |
|||
Line 614: | Line 614: | ||
Mil | 1000000.0 | 90.0 | 100.0 | 1600.0 | 1.5707963267949 |
Mil | 1000000.0 | 90.0 | 100.0 | 1600.0 | 1.5707963267949 |
||
Rad | 1000000.0 | 339.51308232088 | 377.23675813431 | 6035.7881301489 | 5.9256211400939</pre> |
Rad | 1000000.0 | 339.51308232088 | 377.23675813431 | 6035.7881301489 | 5.9256211400939</pre> |
||
=={{header|Delphi}}== |
|||
{{libheader| System.SysUtils}} |
|||
{{libheader| System.Math}} |
|||
{{Trans|Go}} |
|||
<lang Delphi> |
|||
program normalization_and_conversion; |
|||
{$APPTYPE CONSOLE} |
|||
uses |
|||
System.SysUtils, |
|||
System.Math; |
|||
function d2d(d: double): double; |
|||
begin |
|||
result := FMod(d, 360); |
|||
end; |
|||
function g2g(g: double): double; |
|||
begin |
|||
result := FMod(g, 400); |
|||
end; |
|||
function m2m(m: double): double; |
|||
begin |
|||
result := FMod(m, 6400); |
|||
end; |
|||
function r2r(r: double): double; |
|||
begin |
|||
result := FMod(r, 2 * Pi); |
|||
end; |
|||
function d2g(d: double): double; |
|||
begin |
|||
result := d2d(d) * 400 / 360; |
|||
end; |
|||
function d2m(d: double): double; |
|||
begin |
|||
result := d2d(d) * 6400 / 360; |
|||
end; |
|||
function d2r(d: double): double; |
|||
begin |
|||
result := d2d(d) * Pi / 180; |
|||
end; |
|||
function g2d(g: double): double; |
|||
begin |
|||
result := g2g(g) * 360 / 400; |
|||
end; |
|||
function g2m(g: double): double; |
|||
begin |
|||
result := g2g(g) * 6400 / 400; |
|||
end; |
|||
function g2r(g: double): double; |
|||
begin |
|||
result := g2g(g) * Pi / 200; |
|||
end; |
|||
function m2d(m: double): double; |
|||
begin |
|||
result := m2m(m) * 360 / 6400; |
|||
end; |
|||
function m2g(m: double): double; |
|||
begin |
|||
result := m2m(m) * 400 / 6400; |
|||
end; |
|||
function m2r(m: double): double; |
|||
begin |
|||
result := m2m(m) * Pi / 3200; |
|||
end; |
|||
function r2d(r: double): double; |
|||
begin |
|||
result := r2r(r) * 180 / Pi; |
|||
end; |
|||
function r2g(r: double): double; |
|||
begin |
|||
result := r2r(r) * 200 / Pi; |
|||
end; |
|||
function r2m(r: double): double; |
|||
begin |
|||
result := r2r(r) * 3200 / Pi; |
|||
end; |
|||
function s(f: double): string; |
|||
begin |
|||
var wf := FloatToStrF(f, ffGeneral, 16, 64).Split([FormatSettings.DecimalSeparator], TStringSplitOptions.ExcludeEmpty); |
|||
if Length(wf) = 1 then |
|||
exit(format('%7s ', [wf[0]])); |
|||
var le := length(wf[1]); |
|||
if le > 7 then |
|||
le := 7; |
|||
Result := format('%7s.%-7s', [wf[0], copy(wf[1], 0, le)]); |
|||
end; |
|||
begin |
|||
var angles: TArray<Double> := [-2, -1, 0, 1, 2, 6.2831853, 16, 57.2957795, 359, |
|||
399, 6399, 1000000]; |
|||
var ft := '%s %s %s %s %s'; |
|||
writeln(format(ft, [' degrees ', 'normalized degs', ' gradians ', |
|||
' mils ', ' radians'])); |
|||
for var a in angles do |
|||
writeln(format(ft, [s(a), s(d2d(a)), s(d2g(a)), s(d2m(a)), s(d2r(a))])); |
|||
writeln(format(ft, [#10' gradians ', 'normalized grds', ' degrees ', |
|||
' mils ', ' radians'])); |
|||
for var a in angles do |
|||
writeln(format(ft, [s(a), s(g2g(a)), s(g2d(a)), s(g2m(a)), s(g2r(a))])); |
|||
writeln(format(ft, [#10' mils ', 'normalized mils', ' degrees ', |
|||
' gradians ', ' radians'])); |
|||
for var a in angles do |
|||
writeln(format(ft, [s(a), s(m2m(a)), s(m2d(a)), s(m2g(a)), s(m2r(a))])); |
|||
writeln(format(ft, [#10' radians ', 'normalized rads', ' degrees ', |
|||
' gradians ', ' mils '])); |
|||
for var a in angles do |
|||
writeln(format(ft, [s(a), s(r2r(a)), s(r2d(a)), s(r2g(a)), s(r2m(a))])); |
|||
readln; |
|||
end.</lang> |
|||
=={{header|Factor}}== |
=={{header|Factor}}== |