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.

## Installation & Prerequisites

This program is written C and exclusively for Linux. It uses Cairo for drawing and X11 for input, which means it will only run in the X window system. Besides these, the only required library is the Gnu Scientific Library (GSL) including CBLAS.

To build, 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 1.0
```

The arguments are 6 integers (p1, p2, p3, q1, q2, q3) and two floating point numbers (t,s) describing the triangle group under consideration (initially, t and s can be changed with the arrow keys). The last argument is optional; if it is not given, it defaults to s = 1.

## 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) |