public Vec3d norm() {
        final float x = x(), y = y(), z = z();

        if (x >= y) {
            if (y >= z) {
                return new Vec3d(dim, applyT(0, 1, 2));
            } else if (z >= x) {
                return new Vec3d(dim, applyT(2, 0, 1));
            } else {
                return new Vec3d(dim, applyT(0, 2, 1));
            }
        } else if (x >= z) {
            return new Vec3d(dim, applyT(1, 0, 2));
        } else if (z >= y) {
            return new Vec3d(dim, applyT(2, 1, 0));
        } else {
            return new Vec3d(dim, applyT(1, 2, 0));
        }
    }