π Theory/Computer Vision
μ§κ°μ’νκ³ & ꡬ면μ’νκ³ | μ’ν λ³ν
λ
즀
2024. 3. 29. 13:49
λ°μν
μ§κ° μ’νκ³μ ꡬ면 μ’νκ³λ μ΄λ―Έμ§ μ²λ¦¬ λ° λΆμμμ μ¬μ©λλ μ’ν μμ€ν μ΄λ€.
μ§κ° μ’νκ³(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)
λ°μν