regentanz 0.3.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +268 -0
- data/bin/regentanz +16 -0
- data/lib/regentanz.rb +10 -11
- data/lib/regentanz/cli/common.rb +35 -0
- data/lib/regentanz/cli/compare.rb +85 -0
- data/lib/regentanz/cli/compile.rb +27 -0
- data/lib/regentanz/template_compiler.rb +263 -0
- data/lib/regentanz/version.rb +1 -2
- data/lib/regentanz/yaml-ext.rb +18 -0
- data/spec/regentanz/resources/test/unloaded.rb +11 -0
- data/spec/regentanz/template_compiler_spec.rb +692 -0
- data/spec/spec_helper.rb +2 -0
- metadata +45 -152
- data/.gitignore +0 -5
- data/.rvmrc +0 -4
- data/CHANGELOG.rdoc +0 -26
- data/Gemfile +0 -4
- data/LICENSE +0 -24
- data/README.rdoc +0 -54
- data/Rakefile +0 -23
- data/lib/regentanz/astronomy.rb +0 -69
- data/lib/regentanz/cache.rb +0 -2
- data/lib/regentanz/cache/base.rb +0 -51
- data/lib/regentanz/cache/file.rb +0 -86
- data/lib/regentanz/callbacks.rb +0 -18
- data/lib/regentanz/conditions.rb +0 -3
- data/lib/regentanz/conditions/base.rb +0 -16
- data/lib/regentanz/conditions/current.rb +0 -14
- data/lib/regentanz/conditions/forecast.rb +0 -14
- data/lib/regentanz/configuration.rb +0 -55
- data/lib/regentanz/configurator.rb +0 -22
- data/lib/regentanz/google_weather.rb +0 -151
- data/lib/regentanz/parser.rb +0 -1
- data/lib/regentanz/parser/google_weather.rb +0 -100
- data/lib/regentanz/test_helper.rb +0 -52
- data/regentanz.gemspec +0 -30
- data/test/factories.rb +0 -6
- data/test/support/tmp/.gitignore +0 -1
- data/test/support/valid_response.xml.erb +0 -26
- data/test/test_helper.rb +0 -14
- data/test/unit/astronomy_test.rb +0 -26
- data/test/unit/cache/base_test.rb +0 -53
- data/test/unit/cache/file_test.rb +0 -141
- data/test/unit/callbacks_test.rb +0 -27
- data/test/unit/configuration_test.rb +0 -57
- data/test/unit/current_condition_test.rb +0 -33
- data/test/unit/forecast_condition_test.rb +0 -35
- data/test/unit/google_weather_test.rb +0 -125
- data/test/unit/parser/google_weather_parser_test.rb +0 -71
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,198 +1,91 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: regentanz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
|
-
-
|
7
|
+
- Burt Platform Team
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2018-03-20 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
14
|
+
name: aws-sdk-s3
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
19
|
+
version: '1'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
26
|
+
version: '1'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
28
|
+
name: aws-sdk-cloudformation
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: '
|
38
|
-
type: :
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: mocha
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ! '>='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
54
|
-
type: :development
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: bundler
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ! '>='
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
70
|
-
type: :development
|
71
|
-
prerelease: false
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: factory_girl
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ~>
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '2.0'
|
86
|
-
type: :development
|
87
|
-
prerelease: false
|
88
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '2.0'
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: rdoc
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ~>
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '2.4'
|
102
|
-
type: :development
|
33
|
+
version: '1'
|
34
|
+
type: :runtime
|
103
35
|
prerelease: false
|
104
36
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
37
|
requirements:
|
107
|
-
- - ~>
|
38
|
+
- - "~>"
|
108
39
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
110
|
-
description:
|
40
|
+
version: '1'
|
41
|
+
description: Regentanz is a template preprocessor and compiler that makes it easier
|
42
|
+
to work with CloudFormation
|
111
43
|
email:
|
112
|
-
-
|
113
|
-
|
44
|
+
- theo@burtcorp.com
|
45
|
+
- munkby@burtcorp.com
|
46
|
+
- david@burtcorp.com
|
47
|
+
executables:
|
48
|
+
- regentanz
|
114
49
|
extensions: []
|
115
50
|
extra_rdoc_files: []
|
116
51
|
files:
|
117
|
-
- .
|
118
|
-
-
|
119
|
-
- CHANGELOG.rdoc
|
120
|
-
- Gemfile
|
121
|
-
- LICENSE
|
122
|
-
- README.rdoc
|
123
|
-
- Rakefile
|
52
|
+
- README.md
|
53
|
+
- bin/regentanz
|
124
54
|
- lib/regentanz.rb
|
125
|
-
- lib/regentanz/
|
126
|
-
- lib/regentanz/
|
127
|
-
- lib/regentanz/
|
128
|
-
- lib/regentanz/
|
129
|
-
- lib/regentanz/callbacks.rb
|
130
|
-
- lib/regentanz/conditions.rb
|
131
|
-
- lib/regentanz/conditions/base.rb
|
132
|
-
- lib/regentanz/conditions/current.rb
|
133
|
-
- lib/regentanz/conditions/forecast.rb
|
134
|
-
- lib/regentanz/configuration.rb
|
135
|
-
- lib/regentanz/configurator.rb
|
136
|
-
- lib/regentanz/google_weather.rb
|
137
|
-
- lib/regentanz/parser.rb
|
138
|
-
- lib/regentanz/parser/google_weather.rb
|
139
|
-
- lib/regentanz/test_helper.rb
|
55
|
+
- lib/regentanz/cli/common.rb
|
56
|
+
- lib/regentanz/cli/compare.rb
|
57
|
+
- lib/regentanz/cli/compile.rb
|
58
|
+
- lib/regentanz/template_compiler.rb
|
140
59
|
- lib/regentanz/version.rb
|
141
|
-
- regentanz.
|
142
|
-
- test/
|
143
|
-
-
|
144
|
-
-
|
145
|
-
|
146
|
-
|
147
|
-
-
|
148
|
-
|
149
|
-
- test/unit/callbacks_test.rb
|
150
|
-
- test/unit/configuration_test.rb
|
151
|
-
- test/unit/current_condition_test.rb
|
152
|
-
- test/unit/forecast_condition_test.rb
|
153
|
-
- test/unit/google_weather_test.rb
|
154
|
-
- test/unit/parser/google_weather_parser_test.rb
|
155
|
-
homepage: ''
|
156
|
-
licenses: []
|
60
|
+
- lib/regentanz/yaml-ext.rb
|
61
|
+
- spec/regentanz/resources/test/unloaded.rb
|
62
|
+
- spec/regentanz/template_compiler_spec.rb
|
63
|
+
- spec/spec_helper.rb
|
64
|
+
homepage: http://github.com/burtcorp/regentanz
|
65
|
+
licenses:
|
66
|
+
- BSD 3-Clause
|
67
|
+
metadata: {}
|
157
68
|
post_install_message:
|
158
69
|
rdoc_options: []
|
159
70
|
require_paths:
|
160
71
|
- lib
|
161
72
|
required_ruby_version: !ruby/object:Gem::Requirement
|
162
|
-
none: false
|
163
73
|
requirements:
|
164
|
-
- -
|
74
|
+
- - ">="
|
165
75
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
167
|
-
segments:
|
168
|
-
- 0
|
169
|
-
hash: -3677000706019098419
|
76
|
+
version: 2.0.0
|
170
77
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
171
|
-
none: false
|
172
78
|
requirements:
|
173
|
-
- -
|
79
|
+
- - ">="
|
174
80
|
- !ruby/object:Gem::Version
|
175
81
|
version: '0'
|
176
|
-
segments:
|
177
|
-
- 0
|
178
|
-
hash: -3677000706019098419
|
179
82
|
requirements: []
|
180
|
-
rubyforge_project:
|
181
|
-
rubygems_version:
|
83
|
+
rubyforge_project:
|
84
|
+
rubygems_version: 2.6.14
|
182
85
|
signing_key:
|
183
|
-
specification_version:
|
184
|
-
summary:
|
86
|
+
specification_version: 4
|
87
|
+
summary: Template preprocessor and compiler for CloudFormation
|
185
88
|
test_files:
|
186
|
-
-
|
187
|
-
-
|
188
|
-
- test/
|
189
|
-
- test/test_helper.rb
|
190
|
-
- test/unit/astronomy_test.rb
|
191
|
-
- test/unit/cache/base_test.rb
|
192
|
-
- test/unit/cache/file_test.rb
|
193
|
-
- test/unit/callbacks_test.rb
|
194
|
-
- test/unit/configuration_test.rb
|
195
|
-
- test/unit/current_condition_test.rb
|
196
|
-
- test/unit/forecast_condition_test.rb
|
197
|
-
- test/unit/google_weather_test.rb
|
198
|
-
- test/unit/parser/google_weather_parser_test.rb
|
89
|
+
- spec/spec_helper.rb
|
90
|
+
- spec/regentanz/template_compiler_spec.rb
|
91
|
+
- spec/regentanz/resources/test/unloaded.rb
|
data/.rvmrc
DELETED
data/CHANGELOG.rdoc
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
== CHANGELOG
|
2
|
-
|
3
|
-
=== v0.3.3 // 2013-06-09
|
4
|
-
* Remove ActionMailer dependency
|
5
|
-
* Gem functionality is defunct as Google shut down their API
|
6
|
-
|
7
|
-
=== v0.1.4 // 2011-10-14
|
8
|
-
* Fixed bug that caused forecast to have the current day only
|
9
|
-
* present? now properly returns its true state (as opposed to always false)
|
10
|
-
* Known issue: {current_date_time node always returns the beginning of The Epoch}[https://github.com/carpodaster/regentanz/issues/1] (API problem)
|
11
|
-
|
12
|
-
=== v0.1.2 // 2011-04-19
|
13
|
-
* Retry state is tracked by cache backend
|
14
|
-
* Removed OpenStruct by adding Conditions::Forecast and Conditions::Current
|
15
|
-
* XML-Parsing is down in parser class
|
16
|
-
|
17
|
-
=== v0.1.0 // 2011-04-16
|
18
|
-
* Moved caching into separate module
|
19
|
-
|
20
|
-
=== v0.0.5 // 2011-04-15
|
21
|
-
* Removed RAILS_ROOT
|
22
|
-
* Moved constants into class-wide configuration
|
23
|
-
* Callback-stubs
|
24
|
-
|
25
|
-
=== v0.0.1 // 2011-04-13
|
26
|
-
* Initially packaged model as a gem
|
data/Gemfile
DELETED
data/LICENSE
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
Copyright (c) 2011, Carsten Zimmermann
|
2
|
-
All rights reserved.
|
3
|
-
|
4
|
-
Redistribution and use in source and binary forms, with or without
|
5
|
-
modification, are permitted provided that the following conditions are met:
|
6
|
-
* Redistributions of source code must retain the above copyright
|
7
|
-
notice, this list of conditions and the following disclaimer.
|
8
|
-
* Redistributions in binary form must reproduce the above copyright
|
9
|
-
notice, this list of conditions and the following disclaimer in the
|
10
|
-
documentation and/or other materials provided with the distribution.
|
11
|
-
* Neither the name of the original author / copyright holder nor the
|
12
|
-
names of its contributors may be used to endorse or promote products
|
13
|
-
derived from this software without specific prior written permission.
|
14
|
-
|
15
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
16
|
-
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
17
|
-
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
|
19
|
-
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
20
|
-
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
21
|
-
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
22
|
-
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
23
|
-
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
24
|
-
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/README.rdoc
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
== Regentanz
|
2
|
-
*Regentanz* (German: <i>rain dance</i>) is a Ruby library to connect to Google's
|
3
|
-
innofficial (ie. undocumented and unsupported) weather API.
|
4
|
-
|
5
|
-
|
6
|
-
=== Discontinued Weather API
|
7
|
-
*Notice*: Google has discontinued their weather service.
|
8
|
-
The Gem is currently *not* able to return weather data.
|
9
|
-
|
10
|
-
=== Installation
|
11
|
-
The gem is available from rubygems, so using bundler "installation" would be:
|
12
|
-
# Gemfile
|
13
|
-
gem 'regentanz'
|
14
|
-
|
15
|
-
=== Usage
|
16
|
-
Supply a location and a language to retrieve weather:
|
17
|
-
weather = Regentanz::GoogleWeather.new(:location => "Berlin, Germany", :lang => :en)
|
18
|
-
weather.current # current condition
|
19
|
-
weather.forecast # array with forecast conditions
|
20
|
-
|
21
|
-
It uses <b>file-based caching</b> by default, other cache backends will follow.
|
22
|
-
See {Regentanz::Cache::Base}[https://github.com/carpodaster/regentanz/blob/master/lib/regentanz/cache/base.rb]
|
23
|
-
for details (and if you want to create your own backend).
|
24
|
-
|
25
|
-
=== Handling API-Errors
|
26
|
-
|
27
|
-
*TODO* wainting for callbacks
|
28
|
-
|
29
|
-
=== Configuration
|
30
|
-
*Regentanz* can either be configured through a configure block or directly via
|
31
|
-
its configuration object. It uses sane defaults so there should be no need for
|
32
|
-
configuration to start right off. If you're using *Regentanz* with Rails,
|
33
|
-
a file in <tt>config/initializers</tt> is your friend.
|
34
|
-
|
35
|
-
Configure block:
|
36
|
-
Regentanz.configure do |config|
|
37
|
-
config.cache_backend Regentanz::Cache::File
|
38
|
-
config.cache_dir "/path/to/cache_file"
|
39
|
-
end
|
40
|
-
|
41
|
-
Direct configuration:
|
42
|
-
Regentanz.configuration.cache_dir = "/some/other/path"
|
43
|
-
|
44
|
-
See {Regentanz::Configuration}[https://github.com/carpodaster/regentanz/blob/master/lib/regentanz/configuration.rb]
|
45
|
-
for a full list of configurable options.
|
46
|
-
|
47
|
-
=== TODO
|
48
|
-
* Implement OpenWeatherMap as new backend
|
49
|
-
* Finalise callback hooks
|
50
|
-
* Make tests pass on Ruby 1.9
|
51
|
-
|
52
|
-
=== Credits
|
53
|
-
*Regentanz* is based upon and extracted from a standalone Ruby class made for
|
54
|
-
{berlin.kauperts.de}[http://berlin.kauperts.de] by {kaupert media gmbh}[http://kaupertmedia.de].
|
data/Rakefile
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
Bundler::GemHelper.install_tasks
|
4
|
-
require 'rake/testtask'
|
5
|
-
require 'rdoc/task'
|
6
|
-
|
7
|
-
desc 'Default: run unit tests.'
|
8
|
-
task :default => :test
|
9
|
-
|
10
|
-
Rake::TestTask.new(:test) do |t|
|
11
|
-
t.libs << 'lib'
|
12
|
-
t.libs << 'test'
|
13
|
-
t.pattern = 'test/**/*_test.rb'
|
14
|
-
t.verbose = true
|
15
|
-
end
|
16
|
-
|
17
|
-
Rake::RDocTask.new(:rdoc) do |rdoc|
|
18
|
-
rdoc.rdoc_dir = 'rdoc'
|
19
|
-
rdoc.title = 'Regentanz'
|
20
|
-
rdoc.options << '--line-numbers' << '--inline-source'
|
21
|
-
rdoc.rdoc_files.include('README*')
|
22
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
23
|
-
end
|
data/lib/regentanz/astronomy.rb
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
module Regentanz
|
2
|
-
# :nodoc:
|
3
|
-
# Code taken from http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/264573
|
4
|
-
module Astronomy
|
5
|
-
include Math
|
6
|
-
|
7
|
-
private
|
8
|
-
# :doc:
|
9
|
-
|
10
|
-
def sun_rise_set(mode, lat, lng, zenith = 90.8333)
|
11
|
-
#step 1: first calculate the day of the year
|
12
|
-
mode = mode.to_sym
|
13
|
-
date = Date.today
|
14
|
-
n=date.yday
|
15
|
-
|
16
|
-
#step 2: convert the longitude to hour value and calculate an approximate time
|
17
|
-
lng_hour=lng/15
|
18
|
-
t = n+ ((6-lng_hour)/24) if mode==:sunrise
|
19
|
-
t = n+ ((18-lng_hour)/24) if mode==:sunset
|
20
|
-
|
21
|
-
#step 3: calculate the sun's mean anomaly
|
22
|
-
m = (0.9856 * t) - 3.289
|
23
|
-
|
24
|
-
#step 4: calculate the sun's true longitude
|
25
|
-
l = (m+(1.1916 * sin(deg_to_rad(m))) + (0.020 * sin(deg_to_rad(2*m))) + 282.634) % 360
|
26
|
-
|
27
|
-
#step 5a: calculate the sun's right ascension
|
28
|
-
ra = rad_to_deg(atan(0.91764 * tan(deg_to_rad(l)))) % 360
|
29
|
-
|
30
|
-
#step 5b: right ascension value needs to be in the same quadrant as L
|
31
|
-
lquadrant = (l/90).floor*90
|
32
|
-
raquadrant = (ra/90).floor*90
|
33
|
-
ra = ra+(lquadrant-raquadrant)
|
34
|
-
|
35
|
-
#step 5c: right ascension value needs to be converted into hours
|
36
|
-
ra/=15
|
37
|
-
|
38
|
-
#step 6: calculate the sun's declination
|
39
|
-
sin_dec = 0.39782 * sin(deg_to_rad(l))
|
40
|
-
cos_dec = cos(asin(sin_dec))
|
41
|
-
#step 7a: calculate the sun's local hour angle
|
42
|
-
cos_h = (cos(deg_to_rad(zenith)) - (sin_dec * sin(deg_to_rad(lat)))) / (cos_dec * cos(deg_to_rad(lat)))
|
43
|
-
|
44
|
-
return nil if (not (-1..1).include? cos_h)
|
45
|
-
|
46
|
-
#step 7b: finish calculating H and convert into hours
|
47
|
-
h = (360 - rad_to_deg(acos(cos_h)))/15 if mode==:sunrise
|
48
|
-
h = (rad_to_deg(acos(cos_h)))/15 if mode==:sunset
|
49
|
-
|
50
|
-
#step 8: calculate local mean time
|
51
|
-
t = h + ra - (0.06571 * t) - 6.622
|
52
|
-
t %=24
|
53
|
-
|
54
|
-
#step 9: convert to UTC
|
55
|
-
return (date.to_datetime+(t - lng_hour)/24).to_time.getlocal
|
56
|
-
end
|
57
|
-
|
58
|
-
# Convenience helper
|
59
|
-
def deg_to_rad(degrees)
|
60
|
-
degrees*PI/180
|
61
|
-
end
|
62
|
-
|
63
|
-
# Convenience helper
|
64
|
-
def rad_to_deg(radians)
|
65
|
-
radians*180/PI
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
69
|
-
end
|