perlin_noise 0.1.3 → 0.2.0

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: 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: