include "NSLog.incl" double local fn Normalize( f as double, n as double ) double a = f while ( a < -n ) : a += n : wend while ( a >= n ) : a -= n : wend end fn = a double local fn NormalizeToDegrees( f as double ) return fn Normalize( f, 360 ) end fn = 0.0 double local fn NormalizeToGradians( f as double ) return fn Normalize( f, 400 ) end fn = 0.0 double local fn NormalizeToMils( f as double ) return fn Normalize( f, 6400 ) end fn = 0.0 double local fn NormalizeToRadians( f as double ) return fn Normalize( f, 2 * M_PI ) end fn = 0.0 double local fn d2g( f as double ) return f * 10 / 9 end fn = 0.0 double local fn d2m( f as double ) return f * 160 / 9 end fn = 0.0 double local fn d2r( f as double ) return f * M_PI / 180 end fn = 0.0 double local fn g2d( f as double ) return f * 9 / 10 end fn = 0.0 double local fn g2m( f as double ) return f * 16 end fn = 0.0 double local fn g2r( f as double ) return f * M_PI / 200 end fn = 0.0 double local fn m2d( f as double ) return f * 9 / 160 end fn = 0.0 double local fn m2g( f as double ) return f / 16 end fn = 0.0 double local fn m2r( f as double ) return f * M_PI / 3200 end fn = 0.0 double local fn r2d( f as double ) return f * 180 / M_PI end fn = 0.0 double local fn r2g( f as double ) return f * 200 / M_PI end fn = 0.0 double local fn r2m( f as double ) return f * 3200 / M_PI end fn = 0.0 local fn CalculateDegrees CFArrayRef angles = @[@-2, @-1, @0, @1, @2, @6.2831853, @16, @57.2957795, @359, @6399, @1000000] double angle, degrees, gradians, mils, radians NSUInteger i CFStringRef unit CFStringRef dashpad = fn StringByPaddingToLength( @"", 73, @"-", 0 ) ptr anglePtr = fn StringUTF8String( @"Angle" ) ptr unitPtr = fn StringUTF8String( @"Unit" ) ptr normalPtr = fn StringUTF8String( @"Normalized" ) ptr gradiansPtr = fn StringUTF8String( @"Gradians" ) ptr milsPtr = fn StringUTF8String( @"Mils" ) ptr radiansPtr = fn StringUTF8String( @"Radians" ) // Header NSLog( @"\n%@", dashpad ) NSLog( @"%13s %5s %15s %10s %7s %15s", anglePtr, unitPtr, normalPtr, gradiansPtr, milsPtr, radiansPtr ) NSLog( @"%@", dashpad ) // Degrees for i = 0 to fn ArrayCount( angles ) - 1 angle = dblval( angles[i] ) unit = @"Degrees" degrees = fn NormalizeToDegrees( angle ) gradians = fn NormalizeToGradians( fn d2g( degrees ) ) mils = fn NormalizeToMils( fn d2m( degrees ) ) radians = fn NormalizeToRadians( fn d2r( degrees ) ) NSLog( @"%13.4f %-10s % -12.4f % -11.4f % -12.4f % -13.4f", angle, fn StringUTF8String( unit ), degrees, gradians, mils, radians ) next NSLog( @"" ) // Gradians for i = 0 to fn ArrayCount( angles ) - 1 angle = dblval( angles[i] ) unit = @"Gradians" gradians = fn NormalizeToGradians( angle ) degrees = fn NormalizeToDegrees( fn g2d( gradians ) ) mils = fn NormalizeToMils( fn g2m( gradians ) ) radians = fn NormalizeToRadians( fn g2r( gradians ) ) NSLog( @"%13.4f %-10s % -12.4f % -11.4f % -12.4f % -13.4f", angle, fn StringUTF8String( unit ), degrees, gradians, mils, radians ) next NSLog( @"" ) // Mils for i = 0 to fn ArrayCount( angles ) - 1 angle = dblval( angles[i] ) unit = @"Mils" mils = fn NormalizeToMils( angle ) degrees = fn NormalizeToDegrees( fn m2d( mils ) ) gradians = fn NormalizeToGradians( fn m2g( mils ) ) radians = fn NormalizeToRadians( fn m2r( mils ) ) NSLog( @"%13.4f %-10s % -12.4f % -11.4f % -12.4f % -13.4f", angle, fn StringUTF8String( unit ), degrees, gradians, mils, radians ) next NSLog( @"" ) // Radians for i = 0 to fn ArrayCount( angles ) - 1 angle = dblval( angles[i] ) unit = @"Radians" radians = fn NormalizeToRadians( angle ) degrees = fn NormalizeToDegrees( fn r2d( radians ) ) gradians = fn NormalizeToGradians( fn r2g( radians ) ) mils = fn NormalizeToMils( fn r2m( radians ) ) NSLog( @"%13.4f %-10s % -12.4f % -11.4f % -12.4f % -13.4f", angle, fn StringUTF8String( unit ), degrees, gradians, mils, radians ) next NSLog( @"%@", dashpad ) end fn fn CalculateDegrees HandleEvents