Roger Vogeler came up with a way to generate every primitive Pythagorean Triple from (3,4,5):

Inscribe a unit circle inside a 2x2 square, both centered on the origin. For this w/u, I'll use the top right corner of the square as the reference point P. Let the point on the circle which touches the bottom side of the square be the reference point Q. The line PQ crosses the circle in two places. One place is at the point Q. The other point is (4/5,3/5), the Pythagorean Fraction equivalent to 2pq/(p2+q2) and (p2-q2)/(p2+q2) for p=2, q=1 (x and y from above). Now inscribe a rectangle inside the circle where one of the corners is (4/5,3/5), and the sides of the rectangle are parallel to the circumscribed square. Lines from P to the other three corners of this rectangle yield the triples (5,12,13), (8,15,17) and (20,21,29). The p,q values of these are (3,2), (4,1) and (5,2) respectively.

                            this intersection is the point
                                    (20/29,21/29)
                                          |
                                          |
                                          |
                                          |
 _______________________________________\_|_/_____ P (the point (1,1))
 |               ,.onOK@@@@@HQme.,       \|/    ,|
 |          ,.szF'`             `'Tux.,   V  ,oO/|
 |        ,z'`                       `'c,  ,oO`/ |
 |      ,x'`                           `'w,'` /  |
 |    .u'`                             ,oO'n./  /|     this intersection is the point
 |   dy------------------------------,oO`---qb <-|--------- (4/5,3/5)
 |  /7|                            ,O'`    /|VA \|
 | 4y |                         ,oO'      / | \D |
 |,I' |                       ,oO`       /  | `U,|
 |dp  |                     ,O'`        /   |  qb|
 ,j'  |                  ,oO'          /    |  `t,
 AV   |                ,oO`           /     |   VA
 69   |              ,O'`.           /      |   96
 VA   |           ,oO'(the origin)  /       |   AV
 `t,  |         ,oO`               /        |  ,j'
 |qb  |       ,O'`                /         |  dp|
 |`I, |    ,oO'                  /          | ,U'|
 | \D |  ,oO`                   /           | 4y |
 |  VA|,O'`                    /            |/7  |
 |   qb'______________________/_____________dy   |
 |    `'n.                   /           .u'`    |
 |      `'w,                /          ,x'`      |
 |        `'c,             /         ,z'`        |
 |          `'Tux.,       /     ,.szF'`          |
 |               `'TTOK@@@@@HQTT'`               |
 ________________________Q (the point (0, -1))____

From the above, it can be shown that every primitive (p,q) pair generates three new primitive (p,q) pairs and that no pair is repeated. (p,q) generates the following three (p,q) pairs:

(p+2q,q), (2p+q,p), (2p-q,p)

This is a three-way tree. If (p,q) are not (2,1), then it can be shown that the pair which generated (p,q) is (abs(p-2q),q) or (q,abs(p-2q)) (it is helpful to have p>q).

It is also interesting to note that, for every odd n=ab where gcd(a,b) is 1 and a>b>1, n appears at least twice in the form p2-q2.

Reference:

Conway, John H. The Book of Numbers. Springer Verlag. New York: 1996. Pp. 172-3.


Given the recent question of copyright, I thought I'd mention that I have contacted Roger Vogeler directly, and while he made no comment about this site or this writeup, he seemed generally encouraging of my efforts to understand this particular theorem. In particular, aside from the general idea all content in this writeup is my own, including the textart.