reflectDS :: Double -> DrawState -> DrawState
reflectDS th = mapDSAT $ \(AffineTransformation a b c d e f) ->
  AffineTransformation
    (a * cos r + c * sin r)
    (b * cos r + d * sin r)
    (a * sin r - c * cos r)
    (b * sin r - d * cos r)
    e
    f
  where
    r = 2 * th
reflectDS :: Double -> DrawState -> DrawState
reflectDS th = mapDSAT $ \(AffineTransformation a b c d e f) ->
  AffineTransformation
    (a * cos r + c * sin r)
    (b * cos r + d * sin r)
    (a * sin r - c * cos r)
    (b * sin r - d * cos r)
    e
    f
  where
    r = 2 * th
reflectDS th = mapDSAT $ \(AffineTransformation a b c d e f) ->
  AffineTransformation
    (a * cos r + c * sin r)
    (b * cos r + d * sin r)
    (a * sin r - c * cos r)
    (b * sin r - d * cos r)
    e
    f
  where
    r = 2 * th