Adventitious triangles

The classic 20-80-80 triangle geometry problem looks like this. Triangle problem 3 We have an isosceles right triangle ABC\triangle ABC with angles 20°, 80°, and 80°, and lines AEAE and BDBD with angles as shown. The task is to find the red marked angle at EE.

This is a well known problem, and you might have even seen it shared on social media at some point. You can find the solution on this Wikipedia page.

Here’s the fun part no one told you:

  • If you try to generalize the problem with general integral angles (or rational angles) in place of the ones in the image, the red angle will not in general be integral or rational.
  • Nevertheless, there are infinitely many triangles where the 5 labeled angles, along with the unknown angle, are rational. We’ll call these rational adventitious triangles.

From what I can tell, it appears that the rational adventitious triangles come in two families:

  • One infinite family whose defining feature is that you can construct a right angle out of the segments or vertically mirrored images of the segments. The triangle at the top of this page is a member of this infinite family, because the vertical mirror of line AEAE is perpendicular to line DEDE.
  • And a finite family of sporadic triangles where there are no right angles involved.

For fun, I enumerated the latter and they’re all shown below.

I’m curious if one can find natural synthetic geometry proofs for each one, similar to the famous solution to the first triangle of this post. Show these problems to your friends and family. If you find any synthetic arguments, let me know!

Triangle problem 1 Triangle problem 2 Triangle problem 4 Triangle problem 5 Triangle problem 6 Triangle problem 7 Triangle problem 8 Triangle problem 9 Triangle problem 10 Triangle problem 11 Triangle problem 12 Triangle problem 13 Triangle problem 14 Triangle problem 15 Triangle problem 16 Triangle problem 17 Triangle problem 18 Triangle problem 19

Here is the C++ code I wrote to produce these triangles. Each line in the output is of the form (g,a,b,c,±d)(g,a,b,c,\pm d) and corresponds to the triangle where ACB=a2gπ2\angle ACB=\frac a{2g}\cdot\frac{\pi}2, line AEAE is inclined at angle bgπ2\frac bg\cdot\frac{\pi}2 with respect to the vertical, line BDBD is inclined at angle cgπ2\frac cg\cdot\frac{\pi}2 with respect to the vertical, and line DEDE is inclined at angle dgπ2\frac dg\cdot\frac{\pi}2 with respect to the vertical.

#include <cmath>
#include <fstream>
#include <iostream>
#include <numeric>

using namespace std;

// https://www.geogebra.org/calculator/fgbhynue
int main()
{
    ofstream fout("test_langley_out.txt");
    for (int denom = 4; denom <= 180; ++denom)
    {
        fout << "# denom = " << denom << "\n";
        for (int a = 1; a < denom; ++a)
        {
            for (int b = a + 1; b < denom; ++b)
            {
                for (int c = a + 1; c < denom; ++c)
                {
                    if (b == c || gcd(gcd(a, b), c) != 1)
                        continue;
                    auto aa = numbers::pi / 2 * a / denom;
                    auto bb = numbers::pi / 2 * b / denom;
                    auto cc = numbers::pi / 2 * c / denom;
                    auto x = 1 / tan(aa);
                    auto y = 1 / tan(bb);
                    auto z = 1 / tan(cc);
                    auto result = atan((x * x - y * z) / (x * x * (y - z)));
                    auto df = result * denom / (numbers::pi / 2);
                    auto d = (int)round(df);
                    if (abs(df - d) < 1e-9 && b + c != denom && b + abs(d) != denom && c + abs(d) != denom)
                        fout << denom << " " << a << " " << b << " " << c << " " << d << "\n";
                }
            }
        }
    }
}