perlin_noise 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d56e10274a7cddb359c2d92a70d74d9324284c004b5a9c4d597797fbfa6cc65
4
- data.tar.gz: 84342c319a311ff1ced6309f886f6b96851da235d29afc1a278c9e6b15c72611
3
+ metadata.gz: 179ae3787b595dbc41a84aa5f00ac350a0c14d0511cdfc9fa6e08d90529db23c
4
+ data.tar.gz: fb0f033421bb491098cc337643ef566e4f5f009e9ad0463c0f34f33d1f111a95
5
5
  SHA512:
6
- metadata.gz: 566092bd6aa5f67be9573df008a57b8af1a2098161bd006b502468e6646e80724a0a25e983196ce212ece258c7af67f49e5c0532a6da473ad01548cba35bf7f6
7
- data.tar.gz: f0ae7777466b432346ddfc612e70a775eeffd2ae53fb7dc06bc5d74392b03c75b3dde8817098dc8df63d398ff3e6f9b7edb8b7e30076410be3d75bda2b053b95
6
+ metadata.gz: 25e6c74c52e264a8cb3a10c98cf6add042ce83a46b5d67821685affd7fd1b1c1cc5c26f95b14142a6b4b8a9d8b3c542c194b84d3427b9f935f616941b64dedf4
7
+ data.tar.gz: 642e827159d679b85e8d3b4d4b3c65e5157b48c6a0371773425e3d39ef4196aa272aa56e86de18035d51b48f467b5b4d19cd57019e85dcbe3d3a7d889e5e9d7c
@@ -5,7 +5,7 @@ module Perlin
5
5
  class Random
6
6
  def initialize(*seed)
7
7
  # FIXME: Sets the global seed value; this is misleading
8
- srand *seed
8
+ srand(*seed)
9
9
  end
10
10
 
11
11
  def rand(*interval)
@@ -49,12 +49,12 @@ module Perlin
49
49
 
50
50
  def random_unit_vector
51
51
  while true
52
- v = Vector[*Array.new(@dim) { @random.rand * 2 - 1 }]
52
+ v = Perlin::Vector[*Array.new(@dim) { @random.rand * 2 - 1 }]
53
53
  # Discards vectors whose length greater than 1 to avoid bias in
54
54
  # distribution
55
55
  break if v.r > 0 && v.r <= 1
56
56
  end
57
- v.map { |e| e / v.r }
57
+ v / v.r
58
58
  end
59
59
  end
60
60
  end
data/lib/perlin/noise.rb CHANGED
@@ -28,14 +28,14 @@ module Perlin
28
28
  def [](*coords)
29
29
  raise ArgumentError.new("Invalid coordinates") unless coords.length == @dim
30
30
 
31
- coords = Vector[*coords]
32
- cell = Vector[*coords.map(&:to_i)]
31
+ coords = Perlin::Vector[*coords]
32
+ cell = Perlin::Vector[*coords.map(&:to_i)]
33
33
  diff = coords - cell
34
34
 
35
35
  # Calculate noise factor at each surrouning vertex
36
36
  nf = {}
37
37
  iterate @dim, 2 do |idx|
38
- idx = Vector[*idx]
38
+ idx = Perlin::Vector[*idx]
39
39
 
40
40
  # "The value of each gradient ramp is computed by means of a scalar
41
41
  # product (dot product) between the gradient vectors of each grid point
@@ -0,0 +1,43 @@
1
+ module Perlin
2
+ class Vector
3
+ def self.[](*elements)
4
+ Vector.new(elements)
5
+ end
6
+
7
+ def initialize(elements)
8
+ @elements = elements
9
+ end
10
+
11
+ def to_a
12
+ @elements
13
+ end
14
+
15
+ def r
16
+ Math.sqrt(@elements.sum { |e| e**2 })
17
+ end
18
+
19
+ def [](i)
20
+ @elements[i]
21
+ end
22
+
23
+ def map(&block)
24
+ Vector.new(@elements.map(&block))
25
+ end
26
+
27
+ def +(other)
28
+ Vector.new(@elements.zip(other.to_a).map { |a, b| a + b })
29
+ end
30
+
31
+ def -(other)
32
+ Vector.new(@elements.zip(other.to_a).map { |a, b| a - b })
33
+ end
34
+
35
+ def /(scalar)
36
+ Vector.new(@elements.map { |e| e / scalar })
37
+ end
38
+
39
+ def inner_product(other)
40
+ @elements.zip(other.to_a).sum { |a, b| a * b }
41
+ end
42
+ end
43
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Perlin
4
- VERSION = '0.1.3'
4
+ VERSION = '0.2.0'
5
5
  end
data/lib/perlin_noise.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rubygems'
4
- require 'matrix'
3
+ require 'perlin/vector'
5
4
  require 'perlin/version'
6
5
  require 'perlin/curve'
7
6
  require 'perlin/gradient_table'
data/perlin_noise.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ["lib"]
21
21
 
22
22
  # specify any dependencies here; for example:
23
- # s.add_development_dependency "rspec"
24
- # s.add_runtime_dependency "rest-client"
23
+ s.add_development_dependency "rake"
24
+ s.add_development_dependency "test-unit"
25
+ s.add_development_dependency "rubocop"
25
26
  end
data/test/test_perlin.rb CHANGED
@@ -68,10 +68,10 @@ class PerlinTest < Test::Unit::TestCase
68
68
 
69
69
  def test_noise_invalid_params
70
70
  # Dimension
71
- assert_raise(ArgumentError) { Perlin::Noise.new 0 }
72
- assert_raise(ArgumentError) { Perlin::Noise.new 0.1 }
73
- assert_raise(ArgumentError) { Perlin::Noise.new -1 }
74
- assert_raise(ArgumentError) { Perlin::Noise.new -0.1 }
71
+ assert_raise(ArgumentError) { Perlin::Noise.new(0) }
72
+ assert_raise(ArgumentError) { Perlin::Noise.new(0.1) }
73
+ assert_raise(ArgumentError) { Perlin::Noise.new(-1) }
74
+ assert_raise(ArgumentError) { Perlin::Noise.new(-0.1) }
75
75
 
76
76
  # Interval
77
77
  Perlin::Noise.new 1
metadata CHANGED
@@ -1,15 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: perlin_noise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Junegunn Choi
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-08 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2024-06-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: test-unit
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
13
55
  description: Perlin noise implemented in Ruby
14
56
  email:
15
57
  - junegunn.c@gmail.com
@@ -25,6 +67,7 @@ files:
25
67
  - lib/perlin/curve.rb
26
68
  - lib/perlin/gradient_table.rb
27
69
  - lib/perlin/noise.rb
70
+ - lib/perlin/vector.rb
28
71
  - lib/perlin/version.rb
29
72
  - lib/perlin_noise.rb
30
73
  - perlin_noise.gemspec
@@ -33,7 +76,7 @@ homepage: https://github.com/junegunn/perlin_noise
33
76
  licenses:
34
77
  - MIT
35
78
  metadata: {}
36
- post_install_message:
79
+ post_install_message:
37
80
  rdoc_options: []
38
81
  require_paths:
39
82
  - lib
@@ -48,9 +91,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
48
91
  - !ruby/object:Gem::Version
49
92
  version: '0'
50
93
  requirements: []
51
- rubyforge_project: perlin
52
- rubygems_version: 2.7.4
53
- signing_key:
94
+ rubygems_version: 3.5.9
95
+ signing_key:
54
96
  specification_version: 4
55
97
  summary: Perlin noise generator
56
98
  test_files: