Each intersection is assigned a type based on the input lines coming in from above, the left, and the diagonal upper left. This makes eight possible types, each represented by a diagram in the controls.
Each type has its own rules about which output lines to draw below, to the right and diagonally to the lower right. These rules can be changed by the user.
The top left corner is an origin where all three lines are on by default.
Intersections are only assigned a type after the lines above and to the left have been drawn, so outputs of one row change the types of the next, cascading to infinity.