# Specifying Rotations

You specify a rotation by a sequence of one or more substrings separated by commas,

rot1[,rot2][...]

Each substring **rot1**, **rot2**, … is a rotation around a particular axis and has the syntax

(x,y,z)angle

*angle* is the size of the rotation, in radians; *x*, *y*, and *z* are three real numbers specifying the rotation axis. There should be no spaces in the string.

Each successive substring specifies a rotation about the new coordinate system. As a special case, the Euler angles are defined as a sequence of three rotations, the first about *z* by angle *α*, the second a rotation about the new *y* axis by angle *β*; the third about the new *z* axis by angle *γ*. For the case *α*=*π*/4, *β*=*π*/3, and *γ*=*π*/2, the syntax would be

(0,0,1)pi/4,(0,1,0)pi/3,(0,0,1)pi/2

You can use as a the following strings as shorthand:

**x:** = shorthand for **(1,0,0)**

**y:** = shorthand for **(0,1,0)**

**z:** = shorthand for **(0,0,1)**

Thus the rotation above could equally be specified as:

z:pi/4,y:pi/3,z:pi/2

Below are two instances of rotations, especially useful for cubic systems:

z:pi/4,y:acos(1/sqrt(3)) ← Rotateszto the (1,1,1) direction z:-pi/4,y:pi/2 ← Rotateszto the (1,-1,0) direction

#### Space groups

Crystallographic space groups consist of a translation part **a** in addition to a rotation part R. In general a point **r** gets mapped into

**r**′ = R

**r**+

**a**

The Questaal codes have an additional syntax for space groups. The translation part gets appended to rotation part in one of the following forms: **:(x1,x2,x3)** or alternatively **::(p1,p2,p3)** with the double ‘**::**’. The first defines the translation in Cartesian coordinates; the second as fractional multiples of lattice vectors.

*Example*: Co is hcp with *c*/*a*=1.632993. Writing the basis as

```
SITE ATOM=A XPOS=1/3 -1/3 1/2
ATOM=A XPOS= 0 0 0
```

generators of the space group read in either of the two equivalent forms

```
i*r3z:(-1*sqrt(3)/6,-1/2,-0.8164966) r2z:(-1*sqrt(3)/6,-1/2,0.8164966) r2x
i*r3z::(1/3,-1/3,-1/2) r2z::(1/3,-1/3,1/2) r2x
```