Dear Ed!
Is there a reason the variations of triangle cuts are sorted in the way they are on your picture? I’m asking, because there are patterns in the cuts that could be useful for calculations, and would be more apparent with a reorder of the results. I suppose you’re using some of them in your code, and maybe something else?
If I had to calculate it by hand I’d’ve used a lot of recursion, beacuse when cutting a triangle off a similar triangle there are only three options:
- The cut passes through the right-angle vertex, so the triangle is split into two similar ones
- The cut is parallel to one of the sides of the big triangle, so what’s left is a trapezium
- The cut is not parallel to any of the sides, in which case what’s left is a cyclic quadrilateral.
The first option is the easiest to tackle: when considering cuts with n triangles you instantly get twice the number of the cuts with n-1 triangles. Moreover, I’m pretty sure they’re definitely not isomorphic to each other, so you don’t even have to compare them. Then I’d probably look at all ways of constructing a trapezium out of n-1 similar right angle triangles, and remove any ones that have a cut through the right-angle vertex that splits off a single triangle. Might need to check for isomorphisms within the group, but there shouldn’t be too many. Then I think I’d look at the ways to construct a pentagon with three right angles (two next to each other and one across from them) out of n-2 triangles and remove the ones where the lone right angle is cut off with a line parallel to the opposite side, as they’d already be counted at the previous step. I thiiiink step three only becomes relevant at n>=6, cuz I don’t see a single cut like that in your set for n=5. Steps 2 and 3 also constrain the angles of trapezia and pentagons under consideration because the original triangle is not automatically similar to the small ones you used for construction, but I dunno how hard/annoying it would be to account for that.
Best wishes,
Elijah