hexlattice = Join @@ (TranslationTransform[# - hexpoints[[1]]][hexpoints] & /@ ptss[1, 1]);
Manipulate[Graphics[{Gray, PointSize[Medium], Point[hexlattice],
Red, Rotate[Point @ #, θ, x] & /@ hexlattice},
PlotRange -> {{-10, 10}, {-10, 10}}, GridLines -> (List /@ x)],
{θ, 0, 2 Pi, Experimental`AngularSlider[##] &},
{{x, {0, 0}}, Locator}]
Using Graph
to connect points to their translations:
ClearAll[colors]
colors[t_, x_][p_] := p /. Thread[Range[2 Length @ hexlattice] ->
Join[#, #] & @(ColorData["Rainbow"] /@ Rescale[Range[Length @ hexlattice]])];
Manipulate[Graph[DirectedEdge[#, # + Length @ hexlattice] & /@ Range[Length @ hexlattice],
VertexSize -> {_ -> Scaled[.02],
(Alternatives @@ Range[Length @ hexlattice]) -> Scaled[.015]},
EdgeStyle -> {DirectedEdge[a_, b_] :>
Directive[Arrowheads[Small], Lighter[colors[θ, x][a]], Thin]},
VertexStyle -> {v_ :> colors[θ, x][v]},
VertexCoordinates -> Join[Thread[Range[Length@hexlattice] -> hexlattice],
Thread[Length[hexlattice] + Range[Length@hexlattice] ->
(RotationTransform[θ, x] /@ hexlattice)]],
PlotRange -> {{-10, 10}, {-10, 10}},
GridLines -> (List /@ x)],
{{θ, Pi/2}, 0, 2 Pi, Experimental`AngularSlider[##] &},
{{x, {-2, -3}}, Locator}]
RotationTransform
? $\endgroup$