Vector3D project(Vector3D o) { final v1dv2 = (x*o.x + y*o.y + z*o.z); final v2dv2 = (o.x*o.x + o.y*o.y + o.z*o.z); final mag = v1dv2/v2dv2; return .vec3( o.x*mag, o.y*mag, o.z*mag, ); }