Recognizing an isometry: isom

### 5.51.1 Recognizing an isometry: isom

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 one argument:
  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

- Input:
  isom([[0,0,1],[0,1,0],[1,0,0]])
  Output:

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

  which means that this isometry is a 3-d symmetry with respect to the plane x − z = 0.
- Input:
  isom(sqrt(2)/2*[[1,-1],[1,1]])
  Output:

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

  Hence, this isometry is a 2-d rotation of angle π/4.
- Input:
  isom([[0,0,1],[0,1,0],[0,0,1]])
  Output:

  ⎡ ⎣ | 0 | ⎤ ⎦

  therefore this transformation is not an isometry.