Module: MkCoord::Trigonometric
- Defined in:
- lib/mk_coord/trigonometric.rb
Class Method Summary collapse
-
.compute_alpha(lambda, beta, eps) ⇒ Object
α の計算.
-
.compute_beta(alpha, delta, eps) ⇒ Object
β の計算.
-
.compute_delta(lambda, beta, eps) ⇒ Object
δ の計算.
-
.compute_lambda(alpha, delta, eps) ⇒ Object
λ の計算.
Class Method Details
.compute_alpha(lambda, beta, eps) ⇒ Object
α の計算
-
α = arctan((-sinβ sinε + cosβ sinλ cosε ) / cosβ cosλ)
@param: lambda (unit: rad) @param: beta (unit: rad) @param: eps (unit: rad) @return: alpha (unit: rad)
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/mk_coord/trigonometric.rb', line 54 def compute_alpha(lambda, beta, eps) a = -Math.sin(beta) * Math.sin(eps) \ + Math.cos(beta) * Math.sin(lambda) * Math.cos(eps) b = Math.cos(beta) * Math.cos(lambda) alpha = Math.atan2(a, b) alpha %= PI2 if a < 0 return alpha rescue => e raise end |
.compute_beta(alpha, delta, eps) ⇒ Object
β の計算
-
β = arcsisn((sinδ cosε - cosδ sinα sinε )
@param: alpha (unit: rad) @param: delta (unit: rad) @param: eps (unit: rad) @return: lambda (unit: rad)
36 37 38 39 40 41 42 |
# File 'lib/mk_coord/trigonometric.rb', line 36 def compute_beta(alpha, delta, eps) a = Math.sin(delta) * Math.cos(eps) \ - Math.cos(delta) * Math.sin(alpha) * Math.sin(eps) return Math.asin(a) rescue => e raise end |
.compute_delta(lambda, beta, eps) ⇒ Object
δ の計算
-
δ = arcsisn((sinβ cosε + cosβ sinλ sinε )
@param: lambda (unit: rad) @param: beta (unit: rad) @param: eps (unit: rad) @return: delta (unit: rad)
75 76 77 78 79 80 81 |
# File 'lib/mk_coord/trigonometric.rb', line 75 def compute_delta(lambda, beta, eps) a = Math.sin(beta) * Math.cos(eps) \ + Math.cos(beta) * Math.sin(lambda) * Math.sin(eps) return Math.asin(a) rescue => e raise end |
.compute_lambda(alpha, delta, eps) ⇒ Object
λ の計算
-
λ = arctan((sinδ sinε + cosδ sinα cosε ) / cosδ cosα)
@param: alpha (unit: rad) @param: delta (unit: rad) @param: eps (unit: rad) @return: lambda (unit: rad)
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/mk_coord/trigonometric.rb', line 15 def compute_lambda(alpha, delta, eps) a = Math.sin(delta) * Math.sin(eps) \ + Math.cos(delta) * Math.sin(alpha) * Math.cos(eps) b = Math.cos(delta) * Math.cos(alpha) lambda = Math.atan2(a, b) lambda %= PI2 if lambda < 0 return lambda rescue => e raise end |