I have always imagined a 2-D crystallographic computing library would be really useful for teaching. I made an abortive attempt some time ago. I was able to use it to make some cool animations. However, without a proper implemenation of the 2-D symmetry groups (plane/wallpaper groups) the code isn’t generally that useful for teaching.