Back

情報科学概論 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


情報科学概論 Bクラス 小テスト 2003.5.27


コマンドライン引数として3次元空間の x , y , z 座標 を整数値で与えるものとする.このとき,この座標を図1で定義されるような極座標に変換するスクリプトを作成する.スクリプトの出力 は以下に示すものになるようにすること.提出はメールの添付書類とすること.

図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