$\newcommand{\K}{\mathbb{K}}$
Sage Days 107
Orsay, Wednesday 20th of February 2020
Nicolas M. Thiéry
LRI, Université Paris Saclay
I made the above piece of art in 2015 as a gift for a friend working on crystals and root systems. It represents an alcove walk in the root system of affine type $\tilde A_2$.
It is about 10 cm high and laser cut in a 3mm slice of wood. The wood comes from an old olive tree in my grand parents' garden in Provence that had died of frost in the harsh winter of 1955.
In this presentation I briefly explain the math behind, describe the process to reproduce it, and propose a project to improve the process.
L = RootSystem(["G",2]).ambient_space()
L.plot(fundamental_weights=false, roots=false)
These reflections generate a group: the Coxeter group. Here it's a dihedral group.
Let's draw all the reflection hyperplanes for this group:
L.plot(alcoves=true, fundamental_weights=false, roots=false)
L = RootSystem(["A",3]).ambient_space()
L.plot(fundamental_weights=false, alcoves=true)
Now what happens with these three affine reflections?
L = RootSystem(["A",2,1]).ambient_space()
L.plot(fundamental_weights=false, alcoves=false, fundamental_chamber=false, roots=false)
L.plot(fundamental_chamber=false, roots=false, fundamental_weights=false)
w
of the groupw
in terms of the generatorsL = RootSystem(["A",2,1]).ambient_space()
w1 = [0,1,2,0,2,1,2,1]
L.plot(alcove_walk=w1, fundamental_chamber=False, labels=False)
Draw an alcove path of type $\tilde A_2$:
L = RootSystem(["A",2,1]).ambient_space()
w1 = [0,1,2,0,2,1,2,1,0,2,0,2,1,2,1,2,0,2,0,1,2,1,0,1]
p = L.plot(alcove_walk=w1, bounding_box=[[-4.5,4.5],[-2.5,6]], fundamental_chamber=False, labels=False)
p
Customize the arrow sizes:
for x in p:
if isinstance(x, sage.plot.arrow.Arrow):
x._options['arrowsize'] = 3
p
Export as SVG:
p.save("alcoves.svg") #, transparent=True, frame=False)
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-1-83de1f4f8fce> in <module>() ----> 1 p.save("alcoves.svg") #, transparent=True, frame=False) NameError: name 'p' is not defined
Output:
Open alcoves.svg
in inkscape:
!inkscape alcoves.svg
The picture contains an outer frame made of a path with four nodes, and a background made of a filled path with four nodes. We need to remove them.
Select all (Ctrl+A)
Ungroup (Shift+Ctrl+G)
Shift-click in the middle of the picture to keep only the outer frame selected
Delete the outer frame (Delete)
Select all (Ctrl+A)
Ungroup (Shift+Ctrl+G)
Ungroup (Shift+Ctrl+G)
Unselect all by clicking well outside of the picture
Select the white background by clicking close to the picture
Delete (Delete)
Combine all the picture as a single surface, without contours:
Save as alcoves-flat.svg (Shift+Ctrl+S)
alcoves-wood.jpg
alcoves-print.svg
with three layers: BluePrint
, Calibrate
, Cut
alcoves-wood.jpg
in BluePrintalcoves-flat.svg
in the layer CutMask
Cut
Mask
Mask
BluePrint
Print alcoves-print.svg
file with its three layers on A4 paper (be careful to stick to 100% zoom!)
Put the sheet on the laser cutter, with its lower left corner on the upper limit of the 12 mark.
Hide the layers except for Cut
Export alcoves-print.svg
to eps (Save a copy -> eps -> ...)
Launch a dry run (laser pointer on, bay open, no blower) and check that the laser draws the alignment crosses at the correct locations. The instructions below use the Linux cups-epilog driver for our Fablab's Epilog Mini laser cutter 24'':
!sudo ifconfig eth0 129.175.5.208/16
!export DEVICE_URI="epilog://129.175.5.206/Legend/rp=100/rs=20/vp=100/vs=20/vf=500/rm=grey"
!../cups-epilog/epilog 123 nthiery alcoves < 2015-12-16-alcoves1.eps
!../cups-epilog/epilog 123 nthiery alcoves < 2015-12-16-alcoves1.eps
See the 2D and 3D pictures in the Sage documentation for inspiration
Why automatize?
Suggestion: