code: public Matrix4f rotateTowardsXY(float dirX, float dirY, Matrix4f dest) {
          if ((properties & PROPERTY_IDENTITY) != 0)
              return dest.rotationTowardsXY(dirX, dirY);
          float rm00 = dirY;
          float rm01 = dirX;
          float rm10 = -dirX;
          float rm11 = dirY;
          float nm00 = m00 * rm00 + m10 * rm01;
          float nm01 = m01 * rm00 + m11 * rm01;
          float nm02 = m02 * rm00 + m12 * rm01;
          float nm03 = m03 * rm00 + m13 * rm01;
          dest._m10(m00 * rm10 + m10 * rm11);
          dest._m11(m01 * rm10 + m11 * rm11);
          dest._m12(m02 * rm10 + m12 * rm11);
          dest._m13(m03 * rm10 + m13 * rm11);
          dest._m00(nm00);
          dest._m01(nm01);
          dest._m02(nm02);
          dest._m03(nm03);
          dest._m20(m20);
          dest._m21(m21);
          dest._m22(m22);
          dest._m23(m23);
          dest._m30(m30);
          dest._m31(m31);
          dest._m32(m32);
          dest._m33(m33);
          dest._properties(properties & ~(PROPERTY_PERSPECTIVE | PROPERTY_IDENTITY | PROPERTY_TRANSLATION));
          return dest;
      }
docs: /* (non-Javadoc)
  @see org.joml.Matrix4fc#rotateTowardsXY(float, float, org.joml.Matrix4f)