情報科学概論 Aクラス 小テスト 2003.5.27 解答例
コマンドライン引数として3次元空間の x , y , z 座標
を整数値で与えるものとする.このとき,この座標を図1で定義されるような円
柱座標に変換するスクリプトを作成する.スクリプトの出力
は以下に示すものになるようにすること.提出はメールの添付書類とすること.
図1 xyz座標と円柱座標の相関
たとえば,以下のようにコマンド入力をする.
$ ruby Ruby-testA-5-27-s034099.rb 1 1 1
出力結果は
(x, y, z) = (1, 1, 1) changes into (rho, phi, z) = (1.41, 0.79, 1.00). |
のように表示されること.ヒントとしては,座標から角度を求めるために使用で きる逆三角関数として atan2 を使うことを考える.このとき,角度を 取る方向に注意.
include Math x = ARGV[0].to_f y = ARGV[1].to_f z = ARGV[2].to_f rho = sqrt(x*x + y*y) phi = atan2(y,x) printf "(x, y, z) = (%d, %d, %d) changes into", x, y, z printf " (rho, phi, z) = (%1.2f, %1.2f, %1.2f).\n", rho, phi, z |
図1 xyz座標と極座標の相関
たとえば,以下のようにコマンド入力をする.
$ ruby Ruby-testB-5-27-s034099.rb 1 1 1
出力結果は
(x, y, z) = (1, 1, 1) changes into (r, theta, phi) = (1.73, 0.96, 0.79). |
のように表示されること.ヒントとしては,座標から角度を求めるために使用で きる逆三角関数として atan2 を使うことを考える.このとき,角度を 取る方向に注意.
include Math x = ARGV[0].to_f y = ARGV[1].to_f z = ARGV[2].to_f r = sqrt(x*x + y*y + z*z) xy = sqrt(x*x + y*y) theta = atan2(xy,z) phi = atan2(y,x) printf "(x, y, z) = (%d, %d, %d) changes into", x, y, z printf " (r, theta, phi) = (%1.2f, %1.2f, %1.2f).\n", r, theta, phi |
Back |