PDA

View Full Version : Post-order multiplication question



Canadian0469
05-22-2008, 07:40 PM
Hey all,

I'm stuck. I'm trying to draw a pyramid of cubes, 6 rows high, and each row is five cubes deep. I've got an inner loop that succesfully makes a line of 5 cubes along the z-axis but now trying to get 6 rows of these. I've got an algorithm down but I'm not sure about the order of multiplication here since I have inner body loops. For example, if I have:

glPushMatrix();
glTranslatef(0.0, 20.0, 0.0);
for (row = 0; row < 6; row++) // draw 6 rows
{
glTranslatef(0.0, -4.0, 0.0);
[...]

Which translation matrix would be multiplied first?

Here's the code:



GLint row = 1;
GLint i = 0;
glPushMatrix();
glTranslatef(0.0, 20.0, 0.0);
for (row = 0; row < 6; row++) // draw 6 rows
{
glTranslatef(0.0, -4.0, 0.0);
GLint j = 0;
while (j < row + 1)
{
glTranslatef(4.0, 0.0, 0.0);
for (i = 0; i < 5; i++) // draws 5 cubes along z
{
glPushMatrix();
[...]
glPopMatrix();
}
j++;
}
}
glPopMatrix();


The inner loop is working fine and I seem to be getting the 6 rows only the rows are scattered and not in the pyramid shape I'm going for...

- Canadian0469

Canadian0469
05-22-2008, 09:41 PM
Problem solved.
In my first example, the first translation to appear at the top before the for loop is processed first. Within a body the transformations are post-multiplied (processed from bottom to top). However, in the case of inner bpdies, for example, in a case where a transformation precedes an inner loop body, that transformation before the inner-loop will be multiplied first.