In the earlier post “irregular tilings and their duals” I briefly discussed how a straight line and a hexagonal tiling can be put together to get a new irregular tiling or grid and how its dual looks like. This nicely illustrates the general case.
For each line of one grid we have to look for intersections with lines of the other grid. Each intersection gives a new point of the joint tiling in addition to the endpoints of the line. Each segment between these points is a line of the joint tiling. The code of the following post “combination of grids – the code” creates a new grid from the combination of two simpler grids.
The function “intersectionAt(…)” finds intersections between two lines. It does not return the coordinates of the intersection. Instead it gives the value of an interpolation parameter t, where t=0 and t=1 fit the endpoints of the first line. Having found the parameter values for all intersections between one line of a grid and all lines of the other grid we simply sort them to get the intersection points in correct order. Then the line segments result from pairs of sequential points.