๋ฐ์ํ
์ง๊ฐ ์ขํ๊ณ์ ๊ตฌ๋ฉด ์ขํ๊ณ๋ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๋ฐ ๋ถ์์์ ์ฌ์ฉ๋๋ ์ขํ ์์คํ ์ด๋ค.
์ง๊ฐ ์ขํ๊ณ(Rectangular Coordinates)
- ์ด๋ฏธ์ง๋ฅผ ๋ค๋ฃฐ ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ขํ ์์คํ
- ์ด๋ฏธ์ง๋ ํฝ์ ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๊ฐ ํฝ์ ์ ํ(row)๊ณผ ์ด(column)์ ์ธ๋ฑ์ค๋ก ํํ
- ์ผ๋ฐ์ ์ผ๋ก ์ผ์ชฝ ์๋จ ๋ชจ์๋ฆฌ๊ฐ (0, 0)์ผ๋ก ์์ํ์ฌ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ์๋ก ์ด(column)์ด ์ฆ๊ฐํ๊ณ ์๋๋ก ๊ฐ์๋ก ํ(row)์ด ์ฆ๊ฐ
๊ตฌ๋ฉด ์ขํ๊ณ(Spherical Coordinates)
- ๊ตฌ๋ฉด ์ขํ๊ณ๋ ์ด๋ฏธ์ง ์ฒ๋ฆฌ์์ ์ฃผ๋ก ์ฌ์ฉ๋์ง๋ ์์ง๋ง, ์ปดํจํฐ ๋น์ ์ ํน์ ๋ถ์ผ์์ ์ฌ์ฉ๋ ์ ์์
- ์ฃผ๋ก 3D ๊ณต๊ฐ์์ ์ฌ์ฉ๋๋ฉฐ, ์๋(latitude), ๊ฒฝ๋(longitude), ๊ณ ๋(altitude)์ ๊ฐ์ ์ขํ๋ฅผ ์ฌ์ฉํ์ฌ ์ง๊ตฌ ํ๋ฉด์ ๋ํ๋
- ํ์ ๋ฐ ๋ฐฉํฅ์ ๋ค๋ฃจ๋ ๋ฐ ์ ์ฉํ๋ฉฐ, ์นด๋ฉ๋ผ์ ์์น ๋ฐ ๋ฐฉํฅ์ ์ ํํ๊ฒ ์ถ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์
- ์๋ฅผ ๋ค์ด, ์ด๋ฏธ์ง์ ํน์ง์ ์ ๊ฐ์งํ๊ณ ์ถ์ ํ๋ ์์
์์๋ ์ง๊ฐ ์ขํ๊ณ๊ฐ ์ฃผ๋ก ์ฌ์ฉ๋์ง๋ง, 3D ๊ฐ์ฒด์ ์์น ๋ฐ ๋ฐฉํฅ์ ์ถ์ ํ๋ ์์
์์๋ ๊ตฌ๋ฉด ์ขํ๊ณ๊ฐ ์ฌ์ฉ๋ ์ ์์
์ง๊ฐ์ขํ๊ณ → ๊ตฌ๋ฉด์ขํ๊ณ ์ขํ ๋ณํ
๊ตฌ๋ฉด์ขํ๊ณ → ์ง๊ฐ์ขํ๊ณ ์ขํ ๋ณํ
์ฝ๋ ์์
import math
# ์ง๊ฐ ์ขํ๊ณ์์ ๊ตฌ๋ฉด ์ขํ๊ณ๋ก ๋ณํํ๋ ํจ์
def rectangular_to_spherical(x, y, z):
# ๊ตฌ์ ๋ฐ์ง๋ฆ ๊ณ์ฐ
r = math.sqrt(x**2 + y**2 + z**2)
# ์๋ ๊ณ์ฐ
phi = math.acos(z / r)
# ๊ฒฝ๋ ๊ณ์ฐ
theta = math.atan2(y, x)
return phi, theta
# ๊ตฌ๋ฉด ์ขํ๊ณ์์ ์ง๊ฐ ์ขํ๊ณ๋ก ๋ณํํ๋ ํจ์
def spherical_to_rectangular(phi, theta, r):
# ์ง๊ฐ ์ขํ x, y, z ๊ณ์ฐ
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
# ์์: ์ง๊ฐ ์ขํ (1, 1, 1)๋ฅผ ๊ตฌ๋ฉด ์ขํ๋ก ๋ณํ
rectangular_x = 1
rectangular_y = 1
rectangular_z = 1
phi, theta = rectangular_to_spherical(rectangular_x, rectangular_y, rectangular_z)
print("๊ตฌ๋ฉด ์ขํ (phi, theta):", phi, theta)
# ์์: ๊ตฌ๋ฉด ์ขํ (pi/4, pi/4)๋ฅผ ์ง๊ฐ ์ขํ๋ก ๋ณํ
spherical_phi = math.pi / 4 # 45๋
spherical_theta = math.pi / 4 # 45๋
radius = 1 # ์์๋ก ๋ฐ์ง๋ฆ์ 1๋ก ๊ฐ์
x, y, z = spherical_to_rectangular(spherical_phi, spherical_theta, radius)
print("์ง๊ฐ ์ขํ (x, y, z):", x, y, z)
๋ฐ์ํ