How to make a translation relative to the line ax + by + c = 0, affine transformations (sorry for my english)
The task:
A triangle is specified. To realize its motion on the basis of mirror reflection with respect to an arbitrary line ax + by + c = 0, the coefficients of which are entered by the user.  

Already done:
I read from the fields on the form the coordinates of the three points of the triangle.
Putting them into objects of class Point (left (x, y), top (x, y), right (x, y)).
Make an array of points from the points of a triangle:

Point[] points = new Point[3] { left, top, right };


Draw a coordinate system:

DrawField();
DrawCoordinateSystem();


Draw a triangle:

graph.FillPolygon(Brushes.ForestGreen, points);


Make a mirror reflection of the triangle:

Point[] pointsCopy = (Point[]) points.Clone();   
for (int i = 0; i  pointsCopy.Length; i++)
    pointsCopy[i].Y = -pointsCopy[i].Y; 
graph.FillPolygon(Brushes.RoyalBlue, pointsCopy);


Read the coefficients (a, b, c) from the fields on the form for the equation ax + by + c = 0.  



Question:
Tell me how to move it further relative to the line ax + by + c = 0 ?
To mirror an object in relation to an arbitrary line, you first have to find the coordinates of that object in the frame of reference of that line. For convenience, we will define a frame of reference where the $X$ axis is colinear with the line itself and the $Y$ axis will be perpendicular to the line. Then, we can flip the Y coordinate in that frame of reference to obtain the mirrored point and finally we will reverse the transform from the line coordinate system and back to the global coordinate system.

To define a coordinate system, we will need to use one point the line passes through as the origin $O$ of that coordinate system. This can be obtained easily by setting $x = 0$ or $y = 0$ in the line equation and we end up with the point $\{-c/a, 0\}$ or $\{0, -c/b\}$. Getting the $X$ and $Y$ axis of the new coordinate system is easy. The $X$ axis vector $\{X_x, X_y\}$ will be computed by normalizing $\{a, b\}$ from the line equation. Then we need a perpendicular vector for the $Y$ axis direction. This is easily obtained by using either $\{-X_y, X_x\}$ or $\{X_y, -X_x\}$ (you can verify that by taking the dot product between $X$ and $Y$ which will be zero).

Now that you have an origin and a coordinate system, let's find a mirrored point of vector P on that system. First we need to express it in the new coordinate system. This can be done by projecting $P-O$ to the basis vectors $X$ and $Y$, so the coordinates in the new system will be $\{\langle(P - O), X\rangle, \langle(P - O), Y\rangle\}$.
To obtain the mirrored point, we simply flip the Y coordinate. To obtain the final vector in the original space, we simply invert the first transform. The final point should be $O + X\cdot\langle(P-O), X\rangle - Y\cdot\langle(P-O), Y\rangle$

A note on notation: $\langle u,v\rangle$ was used for dot product between vectors. $u\cdot k$ was used for product between vector and scalar