Vector spinorBetween(Vector vec) { num d = this.lengthSqr; num r = (vec.x * x + vec.y * y) / d; num i = (vec.y * x - vec.x * y) / d; return new Vector(r, i); }