joules 0.4.0 → 0.4.1

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
  SHA1:
3
- metadata.gz: 98b2e0c6df0fd3755eb58eaad979471c569ac1a6
4
- data.tar.gz: 275a48df9e2c4dff48105fbecfa35edb20b4c442
3
+ metadata.gz: 20266cc292103a7a4ec29036bf2eb5eca74653ea
4
+ data.tar.gz: df55eff3e23043443756fec9ea24ed7351313115
5
5
  SHA512:
6
- metadata.gz: 37eb1b3cdd2c77fde36b2a2873cad5386885a2d2e5adb9410a943e784078a7e7def52dde7f661c132ff0059d67aacb03ee12b638d361666a38e17eb04f390f74
7
- data.tar.gz: 6ab629ad3ea3ab4b4f87a520c2a524176dc6a37b8ff908e062572c53f3226961031ad9001ac3f1305d47e4d2d3d21ddd50e90de26c486c01df4ad53f08ba940a
6
+ metadata.gz: f744ec8a76f8a7fac6c7a74295eb01e8d3f29230729b5e447ec6f72d9c0dc6f25aa39dce9eb9c476a706a195196d1ba21932e27d52f9247aea646776836628db
7
+ data.tar.gz: 7f49d574908f32acb1c75332ee4f1e2d5f81413f4ad215049fc6122a820cd66386fc4039400b44857f08134bda28c136cf2fe6c254504cf0e9eb51d5fe2b175e
data/README.md CHANGED
@@ -15,7 +15,7 @@ gem build joules.gemspec
15
15
 
16
16
  ### Library Installation
17
17
  ```Bash
18
- gem install joules-0.4.0.gem
18
+ gem install joules-0.4.1.gem
19
19
  ```
20
20
 
21
21
  ### Library Import
@@ -69,6 +69,9 @@ This would return 23.4.
69
69
  #### Version 0.4.0
70
70
  * Added Physics formulas in circular motion
71
71
 
72
+ #### Version 0.4.1
73
+ * Added Physics formulas in oscillations
74
+
72
75
  ### Contribution
73
76
  Please feel free to submit any ideas, questions, or problems by reporting an issue.
74
77
 
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing circular motion formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Circular motion module (circular_motion.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing constants
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Constants module (constants.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing conversion formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Conversion module (conversion.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing density formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Density module (density.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing electric fields formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Electric fields module (electric_fields.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing electricity formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Electricity module (electricity.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing energy, work, and power formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Energy, work, and power module (energy_work_power.rb)
data/lib/joules/forces.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing forces formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Forces module (forces.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing geometry formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Geometry module (geometry.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing gravitational fields formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Gravitational fields module (gravitational_fields.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing kinematics formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Kinematics module (kinematics.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing magnetic fields formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Magnetic fields module (magnetic_fields.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing mass and weight formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Mass and weight module (mass_weight.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing momentum and impulse formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Momentum and impulse module (momentum_impulse.rb)
@@ -0,0 +1,124 @@
1
+ #==============================================================================
2
+ # Joules
3
+ #
4
+ # @description: Module for providing oscillations formulas
5
+ # @author: Elisha Lai
6
+ # @version: 0.4.1 07/06/2015
7
+ #==============================================================================
8
+
9
+ # Oscillations module (oscillations.rb)
10
+
11
+ module Joules
12
+ module_function
13
+
14
+ # Calculates the acceleration of a particle in oscillation given angular velocity and particle displacement.
15
+ # @param angular_velocity [Int, Float]
16
+ # angular_velocity is in radians per second
17
+ # @param particle_displacement [Int, Float]
18
+ # particle_displacement is in metres
19
+ # @return [Float]
20
+ # return value is in metres per second squared
21
+ # @example
22
+ # Joules.particle_acceleration(2.4, 3) #=> -17.28
23
+ # @note There is one other method for calculating acceleration.
24
+ def particle_acceleration(angular_velocity, particle_displacement)
25
+ return (- (angular_velocity ** 2.0) * displacement)
26
+ end
27
+
28
+ # Calculates the displacement of a particle in oscillation given amplitude, angular velocity, and time.
29
+ # @param amplitude [Int, Float]
30
+ # amplitude >= 0; amplitude is in metres
31
+ # @param angular_velocity [Int, Float]
32
+ # angular_velocity is in radians per second
33
+ # @param time [Int, Float]
34
+ # time >= 0; time is in seconds
35
+ # @return [Float]
36
+ # return value is in metres
37
+ # @example
38
+ # Joules.particle_displacement(5, 2.4, 3) #=> 3.041756572661276
39
+ def particle_displacement(amplitude, angular_velocity, time)
40
+ return amplitude * Math.cos(angular_velocity * time)
41
+ end
42
+
43
+ # Calculates the velocity of a particle in oscillation given angular velocity, amplitude, and particle displacement.
44
+ # @param angular_velocity [Int, Float]
45
+ # angular_velocity is in radians per second
46
+ # @param amplitude [Int, Float]
47
+ # amplitude >= 0; amplitude is in metres
48
+ # @param particle_displacement [Int, Float]
49
+ # particle_displacement is in metres
50
+ # @param return_sign [String]
51
+ # return_sign is either '-' or '+'
52
+ # @return [Float, Array<Float>]
53
+ # return list has a length of 2; each velocity in return list or return value is in metres per second
54
+ # @example
55
+ # Joules.particle_velocity(2.4, 5, 3) #=> [9.6, -9.6]
56
+ def particle_velocity(angular_velocity, amplitude, particle_displacement, return_sign = nil)
57
+ return_value = angular_velocity * (((amplitude ** 2) - (particle_displacement ** 2)) ** 0.5)
58
+ if return_sign == '-'
59
+ return (- return_value)
60
+ elsif return_sign == '+'
61
+ return return_value
62
+ else
63
+ return [return_value, (- return_value)]
64
+ end
65
+ end
66
+
67
+ # Calculates the maximum speed of a particle in oscillation given angular velocity and amplitude.
68
+ # @param angular_velocity [Int, Float]
69
+ # angular_velocity is in radians per second
70
+ # @param amplitude [Int, Float]
71
+ # amplitude >= 0; amplitude is in metres
72
+ # @return [Float]
73
+ # return value is in metres per second
74
+ # @example
75
+ # Joules.maximum_speed(2.4, 5) #=> 12.0
76
+ def max_particle_speed(angular_velocity, amplitude)
77
+ return angular_velocity * amplitude.to_f
78
+ end
79
+
80
+ # Calculates the maximum acceleration of a particle in oscillation given angular velocity and amplitude.
81
+ # @param angular_velocity [Int, Float]
82
+ # angular_velocity is in radians per second
83
+ # @param amplitude [Int, Float]
84
+ # amplitude >= 0; amplitude is in metres
85
+ # @return [Float]
86
+ # return value >= 0; return value is in metres per second squared
87
+ # @example
88
+ # Joules.maximum_acceleration(2.4, 5) #=> 28.799999999999997
89
+ def max_particle_acceleration(angular_velocity, amplitude)
90
+ return (angular_velocity ** 2.0) * amplitude
91
+ end
92
+
93
+ # Calculates the time period of a mass-spring system given mass and spring constant.
94
+ # @param mass [Int, Float]
95
+ # mass >= 0; mass is in kilograms
96
+ # @param spring_constant [Int, Float]
97
+ # spring_constant > 0; spring_constant is in newtons per metre
98
+ # @return [Float]
99
+ # return value >= 0; return value is in seconds
100
+ # @raise [ZeroDivisionError] if spring_constant = 0
101
+ # @example
102
+ # Joules.time_period_v2(20, 5) #=> 12.566370614359172
103
+ # @note There are two other methods for calculating time period.
104
+ def time_period_v2(mass, spring_constant)
105
+ if spring_constant.zero?
106
+ raise ZeroDivisionError.new('divided by 0')
107
+ else
108
+ return 2 * Math::PI * ((mass / spring_constant.to_f) ** 0.5)
109
+ end
110
+ end
111
+
112
+ # Calculates the time period of a simple pendulum given pendulum length.
113
+ # @param pendulum_length [Int, Float]
114
+ # pendulum_length >= 0; pendulum_length is in metres
115
+ # @return [Float]
116
+ # return value >= 0; return value is in seconds
117
+ # @example
118
+ # Joules.time_period_v3(8.4) #=> 5.814133609631141
119
+ # @note There are two other methods for calculating time period.
120
+ def time_period_v3(pendulum_length)
121
+ return 2 * Math::PI * ((pendulum_length / FREE_FALL_ACCELERATION) ** 0.5)
122
+ end
123
+
124
+ end
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing pressure formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Pressure module (pressure.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing quantum formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Quantum module (quantum.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing stress and strain formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Stress and strain module (stress_strain.rb)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing thermodynamics formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Thermodynamics module (thermodynamics.rb)
data/lib/joules/waves.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing waves formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Waves module (waves.rb)
@@ -82,11 +82,12 @@ module Joules
82
82
  # @param frequency [Int, Float]
83
83
  # frequency > 0; frequency is in hertz
84
84
  # @return [Float]
85
- # return value > 0; return value is in hertz
85
+ # return value > 0; return value is in seconds
86
86
  # @raise [ZeroDivisionError] if frequency = 0
87
87
  # @example
88
- # Joules.time_period(0.08) #=> 12.5
89
- def time_period(frequency)
88
+ # Joules.time_period_v1(0.08) #=> 12.5
89
+ # @note There are two other methods for calculating time period.
90
+ def time_period_v1(frequency)
90
91
  if frequency.zero?
91
92
  raise ZeroDivisionError.new('divided by 0')
92
93
  else
data/lib/joules.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @description: Module for providing Physics formulas
5
5
  # @author: Elisha Lai
6
- # @version: 0.4.0 06/06/2015
6
+ # @version: 0.4.1 07/06/2015
7
7
  #==============================================================================
8
8
 
9
9
  # Joules module (joules.rb)
@@ -20,6 +20,7 @@ require 'joules/stress_strain'
20
20
  require 'joules/pressure'
21
21
  require 'joules/thermodynamics'
22
22
  require 'joules/waves'
23
+ require 'joules/oscillations'
23
24
  require 'joules/electricity'
24
25
  require 'joules/quantum'
25
26
  require 'joules/gravitational_fields'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joules
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elisha Lai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-06 00:00:00.000000000 Z
11
+ date: 2015-06-07 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: " Joules is a library (gem) for providing simple Physics formulas\n
14
14
  \ in kinematics, forces, waves, electricity, and so much more. A\n selection
@@ -35,6 +35,7 @@ files:
35
35
  - lib/joules/magnetic_fields.rb
36
36
  - lib/joules/mass_weight.rb
37
37
  - lib/joules/momentum_impulse.rb
38
+ - lib/joules/oscillations.rb
38
39
  - lib/joules/pressure.rb
39
40
  - lib/joules/quantum.rb
40
41
  - lib/joules/stress_strain.rb