extrude along an arbitrary vector?

I have arbitrary orthogonal vectors float X[3], Y[3], Z[3];
where X is the vector that I want to extrude a polygon that is in Y, Z coordinates.
For example, I have a polygon (-.25,3; 2,3; 2,2.5; .25,2.5; .25,-2.5, 2,-2.5, 2,-3; -.25,-3)
which I want to extrude along the arbitrary (not global) X axis with a length L
The origin of this extrusion is at (x, y, z), where (x, y, z) are in global coordinates.

Presumably, all that I need is the appropriate glRotate command, but I can’t figure out how to get that directly from the X, Y & Z vectors.

[QUOTE=wmelgaard;1287340]
Presumably, all that I need is the appropriate glRotate command, but I can’t figure out how to get that directly from the X, Y & Z vectors.[/QUOTE]
glRotate() generates an orthonormal matrix, but there’s no requirement that X,Y,Z are orthonormal.

You probably want glMultMatrix(), with X, Y, Z and the origin forming the columns and the fourth row being [0,0,0,1].

Translation along the X axis by distance L corresponds to following that with glTranslate(L,0,0).

That works
For my example, polygon in Y-Z plane, extruding in X; origin at GLfloat x,y,z:

GLfloat matrix[16];
   glPushMatrix();
   glTranslatef(x, y, z);
   matrix[0] = Y[0]; matrix[1] = Y[1]; matrix[2] = Y[2]; matrix[3] = 0.0;
   matrix[4] = Z[0]; matrix[5] = Z[1]; matrix[6] = Z[2]; matrix[7] = 0.0;
   matrix[8] = X[0]; matrix[9] = X[1]; matrix[10] = X[2]; matrix[11] = 0.0;
  matrix[12] = 0; matrix[13] = 0; matrix[14] = 0; matrix[15] = 1.0;
  glMultMatrix(matrix);
  glBegin(GL_QUAD_STRIP);
  ...(sides of polygon)
  glEnd();
  glPopMatrix();

Thank you very much.

[QUOTE=GClements;1287342]glRotate() generates an orthonormal matrix, but there’s no requirement that X,Y,Z are orthonormal.

You probably want glMultMatrix(), with X, Y, Z and the origin forming the columns and the fourth row being [0,0,0,1].

Translation along the X axis by distance L corresponds to following that with glTranslate(L,0,0).[/QUOTE]