voxel4r 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in voxel4r.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 TODO: Write your name
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,30 @@
1
+ # Voxel4r
2
+
3
+ Voxels generator library.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'voxel4r'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install voxel4r
18
+
19
+ ## Usage
20
+
21
+ There is not usable yet. :P
22
+ Please wait.
23
+
24
+ ## Contributing
25
+
26
+ 1. Fork it
27
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
28
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
29
+ 4. Push to the branch (`git push origin my-new-feature`)
30
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,87 @@
1
+ require "voxel4r/version"
2
+
3
+ require 'rasem'
4
+ require 'yaml'
5
+
6
+ module Voxel4r
7
+
8
+ class VoxelGraph
9
+ def initialize(data, unitary_length, theta)
10
+ @edge_length = unitary_length
11
+ @data = data
12
+ @theta = theta
13
+
14
+ compute_dimensions!
15
+ end
16
+
17
+ def drawVoxelGraph
18
+ lines = []
19
+
20
+ # Join vertices
21
+ @data.each do |v|
22
+ flb = compute_2d_flb_point(v)
23
+ voxel_edges = compute_voxel_edges(flb[0],flb[1])
24
+ voxel_edges.each { |l| lines << l }
25
+ end
26
+
27
+ # Draw lines in SVG image
28
+ img = Rasem::SVGImage.new(@width, @height) do
29
+ lines.each { |l| line l[0], l[1], l[2], l[3] }
30
+ end
31
+
32
+ img
33
+ end
34
+
35
+ private
36
+
37
+ def compute_voxel_edges(flb_x,flb_y)
38
+ # Voxel vertices offsets
39
+ x1, x2, x3 = @alpha_x, @edge_length, @gamma_x
40
+ y1, y2, y3 = @alpha_y, @edge_length, @gamma_y
41
+
42
+ m = [[ 0,x2,x2, 0, 0,x2,x2, 0,x1,x3,x3,x1],
43
+ [ 0, 0,y2,y2, 0, 0,y2,y2,y1,y1,y3,y3],
44
+ [x2,x2, 0, 0,x1,x3,x3,x1,x3,x3,x1,x1],
45
+ [ 0,y2,y2, 0,y1,y1,y3,y3,y1,y3,y3,y1]]
46
+ m[0].map! {|x| flb_x + x }
47
+ m[1].map! {|y| flb_y - y }
48
+ m[2].map! {|x| flb_x + x }
49
+ m[3].map! {|y| flb_y - y }
50
+ m = m.transpose
51
+ end
52
+
53
+ def compute_2d_flb_point(voxel_index)
54
+ x = voxel_index[0]
55
+ y = voxel_index[1]
56
+ z = voxel_index[2]
57
+
58
+ flb_x = @edge_length * (x + (z * Math.cos(@theta)))
59
+ flb_y = @edge_length * ((@max_y+1-y) + ((@max_z+1-z) * Math.sin(@theta)))
60
+
61
+ [flb_x,flb_y]
62
+ end
63
+
64
+ def compute_dimensions!
65
+ @max_x, @max_y, @max_z = 0,0,0
66
+
67
+ # Set maximums and minimums voxels
68
+ @data.each do |v|
69
+ @max_x = v[0] if v[0] > @max_x
70
+ @max_y = v[1] if v[1] > @max_y
71
+ @max_z = v[2] if v[2] > @max_z
72
+ end
73
+
74
+ # Compute helper lengths
75
+ @alpha_x = @edge_length * Math.cos(@theta)
76
+ @gamma_x = @alpha_x + @edge_length
77
+ @alpha_y = @edge_length * Math.sin(@theta)
78
+ @gamma_y = @alpha_y + @edge_length
79
+
80
+ # Compute SVG image dimensions
81
+ @width = (@edge_length * ((@max_x+1) + (@max_z+1) * Math.cos(@theta))).ceil
82
+ @height = (@edge_length * ((@max_y+1) + (@max_z+1) * Math.sin(@theta))).ceil
83
+ end
84
+
85
+ end
86
+
87
+ end
@@ -0,0 +1,3 @@
1
+ module Voxel4r
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,20 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'voxel4r/version'
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "voxel4r"
7
+ gem.version = Voxel4r::VERSION
8
+ gem.authors = ["Israel Buitron"]
9
+ gem.email = ["israel.buitron@gmail.com"]
10
+ gem.description = %q{Voxels generator library}
11
+ gem.summary = %q{Simply library to generate voxels.}
12
+ gem.homepage = "http://computacion.cs.cinvestav.mx/~ibuitron"
13
+
14
+ gem.add_dependency "rasem"
15
+
16
+ gem.files = `git ls-files`.split($/)
17
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
+ gem.require_paths = ["lib"]
20
+ end
metadata ADDED
@@ -0,0 +1,69 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: voxel4r
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Israel Buitron
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-26 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rasem
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: Voxels generator library
31
+ email:
32
+ - israel.buitron@gmail.com
33
+ executables: []
34
+ extensions: []
35
+ extra_rdoc_files: []
36
+ files:
37
+ - .gitignore
38
+ - Gemfile
39
+ - LICENSE.txt
40
+ - README.md
41
+ - Rakefile
42
+ - lib/voxel4r.rb
43
+ - lib/voxel4r/version.rb
44
+ - voxel4r.gemspec
45
+ homepage: http://computacion.cs.cinvestav.mx/~ibuitron
46
+ licenses: []
47
+ post_install_message:
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ requirements: []
64
+ rubyforge_project:
65
+ rubygems_version: 1.8.24
66
+ signing_key:
67
+ specification_version: 3
68
+ summary: Simply library to generate voxels.
69
+ test_files: []