Desargues Theorem with integer coordinates

125 Views Asked by At

Desargues' theorem involves a set of ten points in a plane or in three-dimensional space. (It's true in higher dimensions, but the affine span of the ten points involved never has a dimension more than $3$.)

Suppose I want all ten points to have integer coordinates, preferable small integers, and also to satisfy simple specifications about the size and shape of the diagram as a whole. Such specifications might include such things as that the two triangles' vertices' locations along the lines through the center of perspectivity should both be in the same direction from the center, or in opposite directions, or that the center should be inside one of the two triangles, or that one of the three points of interest along the axis of perspectivity is at infinity, or that the two triangles should or should not intersect each other.

Can this be done efficiently by some known algorithms?

1

There are 1 best solutions below

2
On BEST ANSWER

I'd start by creating a version of Desargues' theorem with rational coordinates. There are many ways to do so. Simply choosing all free parameters as rational numbers should suffice. A more symmetric approach would start with the interpretation of the theorem as the projection of the intersections of five planes in three-dimensional space: choose the parameters of these planes (normal vector and offset) as integers, and the resulting Desargues' figure will be rational as well. In either case, take the resulting rational coordinates, multiply by the common denominator to obtain integers, then divide by the common divisor in an attemt to make coordinates smaller.

For obtaining small coordinates, I'd simply generate a bunch of these in a randomized fashion then filter out the best i.e. nicest ones. You can also use this filtering approach for desired properties. Or you include these properties in the randomized construction process while still making sure to only use rational parameters.

If the randomization I assumed above is not a desired aim, but you want a single output configuration instead, then I'd not write an algorithm at all, but instead tweak a Cinderella construction till it fits my requirements.