In a unit square, choose a point (F) and reflect it in the centre of the square. Join these two points to the vertices to make 5 segments. This will be a basic unit for rotating about a vertex of the square. The 5 segments (a to e) can be grouped as a list, which can be transformed as a single object.
Drag point F to change the segments.

figure 1 (5 segments)

STEP 2

To group the 5 segments (a to e) as a list and call it 'cell1', input:
cell1={a,b,c,d,e}
Now, we can rotate cell1 about, say, point A, by 90, input:
cell2=rotate[cell1, , A]
The two lists (cell1 and cell2) can be further combined as a new list, and we call it 'tile':
tile={cell1, cell2}
Note that tile is not shown in the graphic view.

figure 2 (group the segments)

STEP 3

Translate the 'tile' by the vectors AC (u) and DB (v). We can use the sequence command to repeat a translation.
sequence[translate[tile, n*u], n, -3, 3]
This sequence of translation generates a new list (list1), which can then be translated in another direction v.
For example, you can input "translate[list1, 2v]" to make a new list by translating list1 with the vector 2v.
Drag point F to change the tiling.

figure 3 (translate the tile)

STEP 3 (alternative)

The translation in two directions can be combined into a single input:
sequence[sequence[translate[tile, n*u+m*v], n, -3, 3], m, -3, 3]
Drag point F to change the tiling.