draw.c | ||

initcairo.c | ||

initcairo.h | ||

limit_set.c | ||

linalg.c | ||

linalg.h | ||

main.c | ||

main.h | ||

Makefile | ||

queue.h | ||

README.md | ||

triangle.c | ||

triangle.h |

# triangle_group_limit_set - visualizer for triangle group limit sets in the projective plane

This program visualizes the fractal limit set of triangle groups in SL(3,R) in the projective plane. For the mathematical details, see our paper.

## Installation & Prerequisites

This program is written C and only runs on Linux with the X window system (because that's what I happen to be using). It uses Cairo for drawing and X11 for input. We also require the Gnu Scientific Library (GSL) including CBLAS.

To build, just make sure GCC as well as these libraries are installed, and run

```
make
```

Then we can run it for example like this:

```
./limit_set 5 5 5 1 1 1 1.0
```

The arguments are 6 integers (p1, p2, p3, q1, q2, q3) and a floating point numbers t. Together they discribe the triangle group under consideration (t can be changed with the arrow keys).

## Key bindings

Drag the mouse to move the image, drag with Shift pressed to rotate.

Key | function |
---|---|

PageUp | increase t by 2% |

PageDown | decrease t by 2% |

Right | increase t by 0.2% |

Left | decreaes t by 0.2% |

Up | increase t by 0.002% |

Down | decrease t by 0.002% |

Space | (reset t to original value) |

R | cycle through affine charts |

l | show limit curve |

L | show limit curve as line or as points |

f | generate limit curve using attracting / repelling fixed points of conjugates of the Coxeter element |

d | show dual limit curve |

r | show fixed points and lines of generating reflections |

a | show fixed points and lines of Coxeter elements |

c | show the orbit of an arbitrary point (point can be changed with Shift+Click) |

b | show certain conics touching the limit curve |

B | show the "boxes" used to approximate the limit curve |

p | save a screenshot of the current image (in PDF format) |

t | toggle info text |

i | (print some info to terminal?) |

x | (show rotated reflectors?) |

M | (make a movie) |