(メインスペース)
目次
改訂:2012.09.14 Fri 23:13
01. gmcl::rad2deg 書式
gmcl::rad2deg の仕様書(ソースより抜粋) ... (radian to degrees)
;### 12: rad2deg 【計算】(ラジアン指定の角度を度数表現に変換)(内部関数) # ---------------------------------------------------------------------- # 書式:$deg = gmcl::rad2deg($rad); # # 引数:ラジアンの角度 (末尾に "d" が含まれている場合は何もしない) # 戻値:度数表現の角度 (実数値の末尾に "d" を追記し、文字列で返す) # # 備考:今までこのサブルーチンを、作者自身も軽視していたが、今後は角度の # トラップルーチンの関所として、フィルタとして活用する。
02. サンプル
#!/usr/bin/perl use strict; use warnings; require "gmcl.pl"; # rad2deg.pl my $pi = atan2(1,1) * 4; my @num = ( $pi, 0, "15d", "45d", "90d", "180d", "-180d", "-90d", "22.5d" , "1d", "0.5d", "0.1d" ); print " deg → rad → deg\n"; print "------------------------------------------\n"; foreach (@num) { # 書式:$rad = gmcl::deg2rad($deg); my $rad = gmcl::deg2rad($_); my $str = ""; ($_ =~ /d/) or $str = sprintf("%8.5f", $_); ($_ =~ /d/) ? ($str = "$_") : ($str = "$str"); # 書式:$deg = gmcl::rad2deg($rad); my $deg = gmcl::rad2deg($rad); printf("%8s :%10.6f : %5s\n", $str, $rad, $deg); } __END__
実行結果:(gmcl.pl v0.91 の場合)↓
c:\usr\edit\test-lib\gmcl>rad2deg.pl deg → rad → deg ------------------------------------------ 3.14159 : 3.141593 : 180d 0.00000 : 0.000000 : 0d 15d : 0.261799 : 15d 45d : 0.785398 : 45d 90d : 1.570796 : 90.0000000000002d 180d : 3.141593 : 180d -180d : -3.141593 : -180d -90d : -1.570796 : -90.0000000000002d 22.5d : 0.392699 : 22.5d 1d : 0.017453 : 1d 0.5d : 0.008727 : 0.5d 0.1d : 0.001745 : 0.1d c:\usr\edit\test-lib\gmcl>
実行結果:(gmcl.pl v0.92 の場合)↓
c:\usr\edit\test-lib\gmcl>rad2deg.pl deg → rad → deg ------------------------------------------ 3.14159 : 3.141593 : 180d 0.00000 : 0.000000 : 0d 15d : 0.261799 : 15d 45d : 0.785398 : 45d 90d : 1.570796 : 90d 180d : 3.141593 : 180d -180d : -3.141593 : -180d -90d : -1.570796 : -90d 22.5d : 0.392699 : 22.5d 1d : 0.017453 : 1d 0.5d : 0.008727 : 0.5d 0.1d : 0.001745 : 0.1d c:\usr\edit\test-lib\gmcl>
v0.92 では、2進数計算で発生する誤差をうまく丸めるように修正した。戻値の度数は『文字列』…末尾に d が付く。そこは注意。