See Wikipedia: Arithmetic Billiards. This Python script uses matplotlib to draw pictures for a 3d arithmetic billiard, either as a 2d projection or as an axonometry.