class Geospatial::Dimension

An integral dimension which maps a continuous space into an integral space. The scale is the maximum integral unit.

Attributes

origin[R]
scale[R]
size[R]

Public Class Methods

map(min, max, steps) click to toggle source
# File lib/geospatial/dimensions.rb, line 26
def self.map(min, max, steps)
        self.new(min, max-min, steps)
end
new(origin, size, scale = 1.0) click to toggle source
# File lib/geospatial/dimensions.rb, line 30
def initialize(origin, size, scale = 1.0)
        @origin = origin
        @size = size
        @scale = scale
end

Public Instance Methods

*(factor) click to toggle source
# File lib/geospatial/dimensions.rb, line 44
def * factor
        self.class.new(@origin, @size, @scale * factor)
end
map(value) click to toggle source

Normalize the value into the range 0..1 and then multiply by scale.

# File lib/geospatial/dimensions.rb, line 61
def map(value)
        ((value - @origin).to_f / @size) * @scale
end
max() click to toggle source
# File lib/geospatial/dimensions.rb, line 56
def max
        @origin + @size
end
min() click to toggle source
# File lib/geospatial/dimensions.rb, line 52
def min
        @origin
end
to_s() click to toggle source
# File lib/geospatial/dimensions.rb, line 36
def to_s
        if @scale != 1.0
                "(#{min}..#{max} * #{@scale})"
        else
                "(#{min}..#{max})"
        end
end
unmap(value) click to toggle source
# File lib/geospatial/dimensions.rb, line 65
def unmap(value)
        @origin + (value / @scale) * @size
end