docs: public Quaternionf ConvertDirectionalVectorToQuaternion(Vector3f d) {
          d.negate();
          Quaternionf q = new Quaternionf();
          // check for exception condition
          if ((d.x == 0) && (d.z == 0)) {
              // exception condition if direction is (0,y,0):
              // straight up, straight down or all zero's.
              if (d.y > 0) { // direction straight up
                  AxisAngle4f angleAxis = new AxisAngle4f(-(float) Math.PI / 2, 1, 0,
                          0);
                  q.set(angleAxis);
              } else if (d.y < 0) { // direction straight down
                  AxisAngle4f angleAxis = new AxisAngle4f((float) Math.PI / 2, 1, 0, 0);
                  q.set(angleAxis);
              } else { // All zero's. Just set to identity quaternion
                  q.identity();
              }
          } else {
              d.normalize();
              Vector3f up = new Vector3f(0, 1, 0);
              Vector3f s = new Vector3f();
              d.cross(up, s);
              s.normalize();
              Vector3f u = new Vector3f();
              d.cross(s, u);
              u.normalize();
              Matrix4f matrix = new Matrix4f(s.x, s.y, s.z, 0, u.x, u.y, u.z, 0, d.x,
                      d.y, d.z, 0, 0, 0, 0, 1);
              q.setFromNormalized(matrix);
          }
          return q;
      }