chris_lib 2.0.5 → 2.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a8e589ae062b5ed85189108754fbaa7d9cbb19b45edced9a8d2fbdf5bca295a2
4
- data.tar.gz: 321eec2a967da2a904da7909109182087c3317d14ace9c546a5b3ea8156fb773
3
+ metadata.gz: 0c7c8165557ae3b2b4b431e71fe111676688ac5cd962ef5607abdc162e9f25f8
4
+ data.tar.gz: fd500a446db634ef54d25198aa48f5cff8f55c66b66178a87b0a654afecc4982
5
5
  SHA512:
6
- metadata.gz: ddae70fc4078288c6dc7b5db4f0027eeac0247001d490c85ba5300a58a14cd7aa34b4dfb81b4f8a822a26c5f1dd5ee6e2284c5511c68f5186460bd6e9c64c55a
7
- data.tar.gz: 81fc5296ba1bd6a8cec244f378fb35312ae7e1deeff4d52da6c822b5a23bb20a450ef7f49ed9aa63270f390f8ae6093c90f0d881580ed63c2548b75be99ebfcb
6
+ metadata.gz: adb81857b6da01ac1ce99289841a4f0ddf0477c00e36d5067c9e6bcf28adb29f781a255d4bde94aeeac79dd64c18862bece4a689f284a2940d59393ca2b65b03
7
+ data.tar.gz: 55a4532a245f4a97567078799565e35557e6a9d3d8639f043c362e89c68b7d0add8f5f29d823c5ad735ea50d6ec96eeec5f293f6b03dd00626db7c0e6d2f1168
@@ -1,4 +1,29 @@
1
1
  require 'matrix'
2
+ require 'quaternion'
3
+ Quaternion.class_eval do
4
+ # rounds each element of quaternion to n decimal places
5
+ def round(n)
6
+ q = self
7
+ Quaternion.new(q[0].round(n), q[1].round(n), q[2].round(n), q[3].round(n))
8
+ end
9
+
10
+ # Creates identity quaternion
11
+ def self.identity
12
+ Quaternion.new(1.0, 0.0, 0.0, 0.0)
13
+ end
14
+
15
+ # Creates zero quaternion
16
+ def self.zero
17
+ Quaternion.new(0.0, 0.0, 0.0, 0.0)
18
+ end
19
+
20
+ # Creates quaternion using square brackets (for compatability with Matrix and Vector)
21
+ # see https://stackoverflow.com/questions/69155796/how-to-define-a-class-method-when-using-class-eval
22
+ def self.[](q0, q1, q2, q3)
23
+ Quaternion.new(q0, q1, q2, q3)
24
+ end
25
+ end
26
+
2
27
  Integer.class_eval do
3
28
  def factorial
4
29
  n = self
@@ -32,6 +57,18 @@ Matrix.class_eval do
32
57
  end
33
58
 
34
59
  Array.class_eval do
60
+ # converts radians to degrees
61
+ # Also rounds to n_decimal places unless n_decimimals is nil
62
+ def to_deg(n_decimals = nil)
63
+ map { |e| e.to_deg(n_decimals) }
64
+ end
65
+
66
+ # converts degrees to radians
67
+ # Also rounds to n_decimal places unless n_decimimals is nil
68
+ def to_rad(n_decimals = nil)
69
+ map { |e| e.to_rad(n_decimals) }
70
+ end
71
+
35
72
  # round each element
36
73
  def round(decimal_points = 0)
37
74
  map { |e| e.round(decimal_points) }
@@ -84,6 +121,24 @@ Array.class_eval do
84
121
  end
85
122
 
86
123
  Float.class_eval do
124
+ # converts radians to degrees
125
+ # Also rounds to n_decimal places unless n_decimimals is nil
126
+ def to_deg(n_decimals = nil)
127
+ include Math unless defined?(Math)
128
+ degrees = self * 180.0 / PI
129
+ return degrees if n_decimals.nil?
130
+ degrees.round(n_decimals)
131
+ end
132
+
133
+ # converts degrees to radians
134
+ # Also rounds to n_decimal places unless n_decimimals is nil
135
+ def to_rad(n_decimals = nil)
136
+ include Math unless defined?(Math)
137
+ radians = self * PI / 180.0
138
+ return radians if n_decimals.nil?
139
+ radians.round(n_decimals)
140
+ end
141
+
87
142
  # rounds exponential notation to n decimal places
88
143
  def eround(decimal_points = 0)
89
144
  ("%.#{decimal_points}e" % self).to_f
@@ -5,6 +5,14 @@ module ShellMethods
5
5
  require 'optparse'
6
6
  Dotenv.load
7
7
 
8
+ # runs an R script from ruby
9
+ # script_path is absolute path of R script
10
+ # arg1 is an argument passed to script, can access in R by
11
+ # arg1 <- commandArgs(trailingOnly=TRUE)[1]
12
+ def r_runner(script_path, arg1)
13
+ `Rscript --vanilla #{script_path} #{arg1}`
14
+ end
15
+
8
16
  def file_size(file_path)
9
17
  `stat -f%z #{file_path}`.to_i
10
18
  end
@@ -1,3 +1,3 @@
1
1
  module ChrisLib
2
- VERSION = "2.0.5"
2
+ VERSION = "2.0.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chris_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5
4
+ version: 2.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-04 00:00:00.000000000 Z
11
+ date: 2022-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -47,7 +47,7 @@ dependencies:
47
47
  version: 6.1.4
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: 6.1.4.2
50
+ version: 6.1.4.6
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
@@ -57,7 +57,21 @@ dependencies:
57
57
  version: 6.1.4
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 6.1.4.2
60
+ version: 6.1.4.6
61
+ - !ruby/object:Gem::Dependency
62
+ name: quaternion
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
61
75
  - !ruby/object:Gem::Dependency
62
76
  name: rspec
63
77
  requirement: !ruby/object:Gem::Requirement