What is the definition of gluLookAt?

The description of the gluLookAt is as follows:
Let UP be the vector upXupYupZ.
Then normalize as follows:
Finally, let s=f×UP″, and u=s×f.
M is then constructed as follows:
M=s⁡0s⁡1s⁡20u⁡0u⁡1u⁡20-f⁡0-f⁡1-f⁡200001 //???
gluLookAt is equivalent to
glTranslated(-eyex, -eyey, -eyez);

Can you explain the description above?Especially the define of M,the line with ???.
Thank you very much.

Have a read of this

gluLookAt is just a shorthand to create the view model matrix

Thank you for your help,but I have to use gluLookAt in my program.Can you explain the function?

He just linked you to a very detailed explanation of how transforms work and what it does.

And no, you don’t “have to use gluLookAt”.

It would be interesting to know what exactly the OP doesn’t get about the function. Any specific questions or are you just not understanding anything at all?

I hope a concrete implementation (from MESA3D) would help

gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx,
      GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy,
      GLdouble upz)
    float forward[3], side[3], up[3];
    GLfloat m[4][4];

    forward[0] = centerx - eyex;
    forward[1] = centery - eyey;
    forward[2] = centerz - eyez;

    up[0] = upx;
    up[1] = upy;
    up[2] = upz;


    /* Side = forward x up */
    cross(forward, up, side);

    /* Recompute up as: up = side x forward */
    cross(side, forward, up);

    m[0][0] = side[0];
    m[1][0] = side[1];
    m[2][0] = side[2];

    m[0][1] = up[0];
    m[1][1] = up[1];
    m[2][1] = up[2];

    m[0][2] = -forward[0];
    m[1][2] = -forward[1];
    m[2][2] = -forward[2];

    glTranslated(-eyex, -eyey, -eyez);

The thing is, Alfonse is right in saying you don’t need to use gluLookAt, because if you get the math behind it, you can write up a function yourself. I suspect the OP doesn’t have a sufficient mathematical basis.

This is exactly what I need!!!Thank you so much!