Sha256: e9e77daf6708def30d051eb4f51ee08994450c321af19124d643a471310d54a1

Contents?: true

Size: 1.72 KB

Versions: 4

Compression:

Stored size: 1.72 KB

Contents

module GameMachine
  class Vector

    attr_accessor :x, :y, :z

    def self.from_array(ar)
      new(ar[0],ar[1],ar[2])
    end

    def self.from(v)
      new(v.x,v.y,v.z)
    end

    def initialize(x=0.0,y=0.0,z=0.0)
      @x = x
      @y = y
      @z = z
    end

    def==(v)
      @x == v.x && @y = v.y && @z = v.z
    end


    def zero?
      @x == 0 && @y == 0 && z == 0
    end

    def zero
      @x = 0.0
      @y = 0.0
      @z = 0.0
    end

    def set(new_x,new_y,new_z)
      @x = new_x
      @y = new_y
      @z = new_z
    end

    def distance_squared(v)
      dx = @x - v.x
      dy = @y - v.y
      #dz = @z - v.z
      #(dx * dx + dy * dy + dz * dz);
      (dx * dx + dy * dy);
    end

    def distance(v)
      Math.sqrt(distance_squared(v))
    end

    def lerp(vector,percent)
      @x = lerp_float(x,vector.x,percent)
      @y = lerp_float(y,vector.y,percent)
    end

    def lerp_float(start_loc,end_loc,percent)
      start_loc + (percent * (end_loc - start_loc))
    end

    def interpolate(vector,change_amount)
      @x=(1-change_amount)*@x + change_amount*vector.x
      @y=(1-change_amount)*@y + change_amount*vector.y
      #@z=(1-change_amount)*@z + change_amount*vector.z
    end

    def -(v1)
      self.class.new( @x - v1.x, @y - v1.y )
    end

    def self.norm(x,y)
      dx = 0.0
      dy = 0.0
      length = Math.sqrt(x*x + y*y)
      if length != 0
        dx = x * (1/length)
        dy = y * (1/length)
      end
      [dx,dy]
    end

    def normalize
      vector = self.class.new
      length = Math.sqrt(@x*@x + @y*@y)
      if length != 0
        vector.x = @x * (1/length)
        vector.y = @y * (1/length)
      end
      vector
    end

    def inspect
      "#{x} #{y} #{z}"
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
game_machine-1.0.4 lib/game_machine/vector.rb
game_machine-1.0.2 lib/game_machine/vector.rb
game_machine-0.0.11 lib/game_machine/vector.rb
game_machine-0.0.10 lib/game_machine/vector.rb