Title: Ray Trace Challenge: Inversion pg 49

I have gotten all my code (including my matrix **multiplication** and **inversion** routines) to pass the prescribed tests up through page 48, where we begin rotating on the X axis.

My code creates the desired result for the “half quarter” and “full quarter” rotations on the X axis.

However, on page 49 there is this last test proposed for the X rotations…

Next, add another test showing that the inverse of this rotation matrix simply

rotates in the opposite direction.

By an inversion, I do not get a rotation in the opposite direction. Instead, the point gets moved to 0,0,0

The matrix after the original PI/4 rotation operation looks like this…

```
Rotation PI/4.0 matrix values
Matrix values
| 1.0000 | 0.0000 | 0.0000 | 0.0000 |
| 0.0000 | 0.7071 | -0.7071 | 0.0000 |
| 0.0000 | 0.7071 | 0.7071 | 0.0000 |
| 0.0000 | 0.0000 | 0.0000 | 1.0000 |
```

That matrix produces the desired result when multiplied by the tuple that represents the 0,1,0 starting point.

If I apply Inversion to that matrix, as the book directs, I get this matrix…

```
Rotation PI/4.0 matrix INVERTED values
Matrix values
| 1.0000 | 0.0000 | 0.0000 | 0.0000 |
| 0.0000 | 0.0000 | 0.0000 | 0.0000 |
| 0.0000 | 0.0000 | 0.0000 | 0.0000 |
| 0.0000 | 0.0000 | 0.0000 | 1.0000 |
```

When multiplied by the 0,1,0 Tuple, this does not produce an opposite rotation, the Tuple is placed at 0,0,0.

Elsewhere on the internet I have read the correct way to reverse a rotation matrix is to *transpose* it.

Indeed, if I use my Transpose routine on the original rotation Matrix I get a matrix that produces a correct opposite rotation…

```
Rotation PI/4.0 matrix TRANSPOSED values
Matrix values
| 1.0000 | 0.0000 | 0.0000 | 0.0000 |
| 0.0000 | 0.7071 | 0.7071 | 0.0000 |
| 0.0000 | -0.7071 | 0.7071 | 0.0000 |
| 0.0000 | 0.0000 | 0.0000 | 1.0000 |
Rotation PI/4.0 TRANSPOSED point values
values: x= 0.000 y= 0.707 z= -0.707 w= 1
```

However, after searching this forum I have not seen any mention that the direction to invert rather than tranpose in this instance is a typo or other error.

What am I doing wrong?