refactoring
added decompose_vector() and changed get_vector()
refactoring using ZERO_VEC
fixed bug caused by refactoring