def arbitrary_orthogonal
      return Vector3.new() if(self.length < self.tolerance)

      if(!self.parallel?( Vector3.new(0.0, 1.0, 0.0) ))
        un_parallel_vec = Vector3.new(0.0,1.0,0.0)
      elsif(!self.parallel?( Vector3.new(0.0,0.0,1.0) ))
        un_parallel_vec = Vector3.new(0.0,0.0,1.0)
      else
	un_parallel_vec = Vector3.new(1.0,0.0,0.0)
      end

      orthogonal = self.cross(un_parallel_vec)
      return orthogonal.normalize
    end
def arbitrary_orthogonal
      return Vector3.new() if(self.length < self.tolerance)

      if(!self.parallel?( Vector3.new(0.0, 1.0, 0.0) ))
        un_parallel_vec = Vector3.new(0.0,1.0,0.0)
      elsif(!self.parallel?( Vector3.new(0.0,0.0,1.0) ))
        un_parallel_vec = Vector3.new(0.0,0.0,1.0)
      else
	un_parallel_vec = Vector3.new(1.0,0.0,0.0)
      end

      orthogonal = self.cross(un_parallel_vec)
      return orthogonal.normalize
    end
[Output]
  return orthogonal vector as Vector3.