impl vec2, vec3, vec4