**Rotation** assumes the known *center of rotation* #O# and *angle of rotation* #phi#. The center #O# is transformed into itself. Any other point #A# on a plane can be connected with a center by a segment #OA# and the transformation rotates that segment by a given angle of rotation around point #O# (positive angle corresponds to counterclockwise rotation, negative - clockwise). The new position of the endpoint of this segment #A'# is a result of a transformation of the original point #A#.

**Reflection** assumes the known *axis of reflection* #OO'#. Any point of this axis is transformed into itself. Any other point #A# is transformed by dropping a perpendicular #AP# from it onto axis #OO'# (so, #P in OO'# is a base of this perpendicular) and extending this perpendicular beyond point #P# to point #A'# by the length equal to the length of #AP# (so, #AP=PA'#). Point #A'# is a reflection of point #A# relative to axis #OO'#.

**Translation** is a shift in some direction. So, we have to have a direction and a distance. These can be defined as a vector or a pair of numbers - shift #d_x# along X-axis and shift #d_y# along Y-axis. Coordinates #(x,y)# of every point are shifted by these two numbers to #(x+d_x, y+d_y)#.

**Dilation** is a scaling. We need a *center of scaling* #O# and a *factor of scaling* #f != 0#. Center #O# does not move anywhere by this transformation. Every other point #A# is shifted along the line #OA# connecting this point with a center #O# to another point #A' in OA# such that #|OA'|=|f|*|OA|#. Depending on the sign of factor #f#, point #A'# is positioned on the same side from center #O# on line #OA# as original point #A# (for #f>0#) or on the opposite side (for #f<0#).