Pythonは、科学計算やデータ処理において非常に強力なツールです。
中でも座標変換は、多くの分野で必要とされる操作の一つです。
例えば、地理情報システム(GIS)やコンピュータグラフィックス(CG)では、座標変換が頻繁に行われます。
本記事では、Pythonを使った基本的な座標変換の方法について解説します。
座標系とは?
座標系とは、空間上の点を表現するための基準フレームです。
最も一般的なものには、デカルト座標系と極座標系があります。
デカルト座標系では、点は (x, y) の形式で表され、極座標系では (r, θ) となります。
ここでは、それぞれの座標系における変換方法について説明します。
デカルト座標系から極座標系への変換
デカルト座標 (x, y) を極座標 (r, θ) に変換するには、以下の式を使用します。
- r = sqrt(x² + y²)
- θ = atan2(y, x)
これをPythonで実装するコードは以下のようになります。
import math
def cartesian_to_polar(x, y):
r = math.sqrt(x**2 + y**2)
theta = math.atan2(y, x)
return r, theta
極座標系からデカルト座標系への変換
逆に、極座標 (r, θ) をデカルト座標 (x, y) に変換するには、次の式を利用します。
- x = r * cos(θ)
- y = r * sin(θ)
Pythonでの実装は以下の通りです。
def polar_to_cartesian(r, theta):
x = r * math.cos(theta)
y = r * math.sin(theta)
return x, y
3次元座標変換
3次元空間では、デカルト座標系と球座標系があります。
ここでは二つの変換方法について説明します。
デカルト座標系から球座標系への変換
デカルト座標 (x, y, z) を球座標 (ρ, θ, φ) に変換するには、次の式を使用します。
- ρ = sqrt(x² + y² + z²)
- θ = atan2(y, x)
- φ = acos(z / ρ)
Pythonでは以下のように実装できます。
def cartesian_to_spherical(x, y, z):
r = math.sqrt(x**2 + y**2 + z**2)
theta = math.atan2(y, x)
phi = math.acos(z / r)
return r, theta, phi
球座標系からデカルト座標系への変換
逆に、球座標 (ρ, θ, φ) をデカルト座標 (x, y, z) に変換するには、以下の式を使用します。
- x = ρ * sin(φ) * cos(θ)
- y = ρ * sin(φ) * sin(θ)
- z = ρ * cos(φ)
Pythonでの実装は以下の通りです。
def spherical_to_cartesian(r, theta, phi):
x = r * math.sin(phi) * math.cos(theta)
y = r * math.sin(phi) * math.sin(theta)
z = r * math.cos(phi)
return x, y, z
まとめ
座標変換は、多くの科学計算やデータ処理において重要な役割を果たします。
Pythonは、これらの変換を簡単かつ効果的に行うための強力なツールを提供します。
上記のサンプルコードを参考にして、座標変換を活用してみてください。
以上、Pythonで座標変換を行う方法についてでした。
最後までお読みいただき、ありがとうございました。