Recognizing an isometry

### 15.5.1 Recognizing an isometry

The isom command determines whether or not a 2× 2 or 3× 3 matrix determines an isometry, and if it does, finds a characterization.

- isom takes A, a 2× 2 or 3× 3 matrix.
- isom(A) returns [0] is A does not determine an isometry, otherwise it returns a list [char,n], where char is the characteristic element of a list of characteristic elements and n is 1 for a direct isometry and -1 for an indirect isometry.
  - For a 2× 2 matrix, char is the angle of rotation about the origin for a direct isometry or a vector determining the line (through the origin) of reflection for an indirect symmetry.
  - For a 3× 3 matrix, char is a list consisting of the axis direction and angle of rotation for a direct isometry or a vector normal to the plane of reflection for an indirect isometry.

#### Examples

isom([[0,0,1],[0,1,0],[1,0,0]])

| ⎡ ⎣ | ⎡ ⎣ | 1,0,−1 | ⎤ ⎦ | ,−1 | ⎤ ⎦

which means that this isometry is a 3D symmetry with respect to the plane x−z=0.

isom(sqrt(2)/2*[[1,-1],[1,1]])

| ⎡ ⎢ ⎢ ⎣ |
π
4
| ,1 | ⎤ ⎥ ⎥ ⎦

Hence, this isometry is a 2D rotation of angle π/4.

isom([[0,0,1],[0,1,0],[0,0,1]])

| ⎡ ⎣ | 0 | ⎤ ⎦

therefore this transformation is not an isometry.