title: ruby operator overloading question
body: <p>i've been messing around with ruby and opengl for entertainment purposes, and i decided to write some 3d vector/plane/etc classes to pretty up some of the math.</p>
  
  <p>simplified example:</p>
  
  <pre><code>class Vec3
      attr_accessor :x,:y,:z
  
      def *(a)
          if a.is_a?(Numeric) #multiply by scalar
              return Vec3.new(@x*a, @y*a, @z*a)
          elsif a.is_a?(Vec3) #dot product
              return @x*a.x + @y*a.y + @z*a.z
          end
      end
  end
  
  v1 = Vec3.new(1,1,1)
  v2 = v1*5 #produces [5,5,5]
  </code></pre>
  
  <p>which all fine and dandy, but i also want to be able to write</p>
  
  <pre><code>v2 = 5*v1
  </code></pre>
  
  <p>which requires adding functionality to Fixnum or Float or whatever, but i couldn't find a way to overload or extend fixnum's multiplication without replacing it entirely. is this possible in ruby? any tips?</p>
  
  <p>(obviously i can just write all my multiplications in the correct order if i need to)</p>