Drawing Planar Diagrams: Difference between revisions

From Knot Atlas
Jump to navigationJump to search
No edit summary
No edit summary
 
(14 intermediate revisions by 3 users not shown)
Line 6: Line 6:


<!--$$?DrawPD$$-->
<!--$$?DrawPD$$-->
<!--Robot Land, no human edits to "END"-->
<!--The lines to END were generated by WikiSplice: do not edit; see manual.-->
{{HelpAndAbout|
{{HelpAndAbout1|n=2|s=DrawPD}}
n = 2 |
DrawPD[pd] takes the planar diagram description pd and creates a graphics object containing a picture of the knot. DrawPD[pd,options], where options is a list of rules, allows the user to control some of the parameters. OuterFace->n sets the face at infinity to the face numbered n. OuterFace->{e_1,e_2,...,e_n} sets the face at infinity to a face which has edges e_1, e_2, ..., e_n in the planar diagram description. Gap->g sets the size of the gap around a crossing to length g.
n1 = 3 |
{{HelpAndAbout2|n=3|s=DrawPD}}
in = <nowiki>DrawPD</nowiki> |
DrawPD was written by Emily Redelmeier at the University of Toronto in the summers of 2003 and 2004.
out= <nowiki>DrawPD[pd] takes the planar diagram description pd and creates a graphics object containing a picture of the knot.
{{HelpAndAbout3}}
DrawPD[pd,options], where options is a list of rules, allows the user to control some of the parameters. OuterFace->n sets the face at infinity to the face numbered n.
OuterFace->{e_1,e_2,...,e_n} sets the face at infinity to a face which has edges e_1, e_2, ..., e_n in the planar diagram description. Gap->g sets the size of the gap around a crossing to length g.</nowiki> |
about= <nowiki>DrawPD was written by Emily Redelmeier at the University of Toronto in the summers of 2003 and 2004.</nowiki>}}
<!--END-->
<!--END-->


Line 17: Line 20:


<!--$$Show[DrawPD[TorusKnot[4, 3]]]$$-->
<!--$$Show[DrawPD[TorusKnot[4, 3]]]$$-->
<!--Robot Land, no human edits to "END"-->
<!--The lines to END were generated by WikiSplice: do not edit; see manual.-->
{{Graphics|
{{Graphics1|n=4}}
n = 4 |
Show[DrawPD[TorusKnot[4, 3]]]
in = <nowiki>Show[DrawPD[TorusKnot[4, 3]]]</nowiki> |
{{Graphics2|n=4|imagename=Drawing_Planar_Diagrams_Out_4.gif}}
img= Drawing_Planar_Diagrams_Out_4.gif |
out= <nowiki>-Graphics-</nowiki>}}
<!--END-->
<!--END-->


Line 26: Line 31:


<!--$$MillettUnknot = PD[
<!--$$MillettUnknot = PD[
X[1,10,2,11], X[9,2,10,3], X[3,7,4,6], X[15,5,16,4], X[5,17,6,16],
X[1,10,2,11], X[9,2,10,3], X[3,7,4,6], X[15,5,16,4],
X[7,14,8,15], X[8,18,9,17], X[11,18,12,19], X[19,12,20,13], X[13,20,14,1]
X[5,17,6,16],X[7,14,8,15], X[8,18,9,17], X[11,18,12,19],
X[19,12,20,13], X[13,20,14,1]
];$$-->
];$$-->
<!--The lines to END were generated by WikiSplice: do not edit; see manual.-->
<!--Robot Land, no human edits to "END"-->
{{In1|n=5}}
{{In|
MillettUnknot = PD[
n = 5 |
X[1,10,2,11], X[9,2,10,3], X[3,7,4,6], X[15,5,16,4], X[5,17,6,16],
in = <nowiki>MillettUnknot = PD[
X[7,14,8,15], X[8,18,9,17], X[11,18,12,19], X[19,12,20,13], X[13,20,14,1]
X[1,10,2,11], X[9,2,10,3], X[3,7,4,6], X[15,5,16,4],
];
X[5,17,6,16],X[7,14,8,15], X[8,18,9,17], X[11,18,12,19],
{{In2}}
X[19,12,20,13], X[13,20,14,1]
];</nowiki>}}
<!--END-->
<!--END-->


<!--$$Show[DrawPD[MillettUnknot]]$$-->
<!--$$Show[DrawPD[MillettUnknot]]$$-->
<!--Robot Land, no human edits to "END"-->
<!--The lines to END were generated by WikiSplice: do not edit; see manual.-->
{{Graphics|
{{Graphics1|n=6}}
n = 6 |
Show[DrawPD[MillettUnknot]]
in = <nowiki>Show[DrawPD[MillettUnknot]]</nowiki> |
{{Graphics2|n=6|imagename=Drawing_Planar_Diagrams_Out_6.gif}}
img= Drawing_Planar_Diagrams_Out_6.gif |
out= <nowiki>-Graphics-</nowiki>}}
<!--END-->
<!--END-->

In such a situation, the option <code>Gap</code> is sometimes handy:

<!--$$Show[DrawPD[MillettUnknot, {Gap -> 0.03}]]$$-->
<!--Robot Land, no human edits to "END"-->
{{Graphics|
n = 7 |
in = <nowiki>Show[DrawPD[MillettUnknot, {Gap -> 0.03}]]</nowiki> |
img= Drawing_Planar_Diagrams_Out_7.gif |
out= <nowiki>-Graphics-</nowiki>}}
<!--END-->

<div id="How does it work?">
==== How does it work? ====
</div>

[[Image:Circles.gif|thumb|250px]][[Image:CirclesAndKnot.gif|thumb|250px]]

<code>DrawPD</code> uses Andreev's theorem {{ref|Andreev1}}, {{ref|Andreev2}}, which states that every planar graph can be realized, nearly uniquely, as the graph of tangencies of circles drawn within the unit disk. That is, to every vertex of <math>G</math> one may associate a disk within the unit disk, so that the interiors of these disks are disjoint and they are tangent iff the corresponding vertices are connected by an edge. The Andreev "circle packing" corresponding to the knot [[4_1]] is the first picture on the right (circle 13 is the unit disk itself).

But now every ingredient of the original knot (every arc, crossing and face) has a disk in the plane in which it can be cleanly drawn and clashes are guaranteed not to occur. Furthermore, knowing the precise coordinates of all the tangency points allows us to represent each ingredient by some nice smooth arcs that meet smoothly. The result is the second picture on the right. Removing all the circles, what remains is the desired clean planar picture of [[4_1]].

{{note|Andreev1}} A. Andreev, ''On convex polyhedra in Lobacevskii spaces'' (in Russian), Math. Sbornik USSR, Nov. Ser. '''81''' (1970) 445-478.

{{note|Andreev2}} A. Andreev, ''On convex polyhedra of finite volume in Lobacevskii spaces'' (in Russian), Math. Sbornik USSR, Nov. Ser. '''83''' (1970) 256-260.

Latest revision as of 17:20, 21 February 2013


My summer student Emily Redelmeier is in the process of writing a program that uses circle packing to draw an arbitrary object given as a PD as in Planar Diagrams. At the moment her program is still slow, limited and sometimes buggy, but it is already quite useful, as the following lines show:

(For In[1] see Setup)

In[2]:= ?DrawPD
DrawPD[pd] takes the planar diagram description pd and creates a graphics object containing a picture of the knot. DrawPD[pd,options], where options is a list of rules, allows the user to control some of the parameters. OuterFace->n sets the face at infinity to the face numbered n. OuterFace->{e_1,e_2,...,e_n} sets the face at infinity to a face which has edges e_1, e_2, ..., e_n in the planar diagram description. Gap->g sets the size of the gap around a crossing to length g.
In[3]:= DrawPD::about
DrawPD was written by Emily Redelmeier at the University of Toronto in the summers of 2003 and 2004.

Thus, for example, here's the torus knot T(4,3):

In[4]:= Show[DrawPD[TorusKnot[4, 3]]]
Drawing Planar Diagrams Out 4.gif
Out[4]= -Graphics-

One problem we currently have is that crossings come out at non-uniform sizes, hence in the picture below you may need magnifying glasses to decide who's over and who's under:

In[5]:= MillettUnknot = PD[ X[1,10,2,11], X[9,2,10,3], X[3,7,4,6], X[15,5,16,4], X[5,17,6,16],X[7,14,8,15], X[8,18,9,17], X[11,18,12,19], X[19,12,20,13], X[13,20,14,1] ];
In[6]:= Show[DrawPD[MillettUnknot]]
Drawing Planar Diagrams Out 6.gif
Out[6]= -Graphics-

In such a situation, the option Gap is sometimes handy:

In[7]:= Show[DrawPD[MillettUnknot, {Gap -> 0.03}]]
Drawing Planar Diagrams Out 7.gif
Out[7]= -Graphics-

How does it work?

Circles.gif
CirclesAndKnot.gif

DrawPD uses Andreev's theorem [Andreev1], [Andreev2], which states that every planar graph can be realized, nearly uniquely, as the graph of tangencies of circles drawn within the unit disk. That is, to every vertex of one may associate a disk within the unit disk, so that the interiors of these disks are disjoint and they are tangent iff the corresponding vertices are connected by an edge. The Andreev "circle packing" corresponding to the knot 4_1 is the first picture on the right (circle 13 is the unit disk itself).

But now every ingredient of the original knot (every arc, crossing and face) has a disk in the plane in which it can be cleanly drawn and clashes are guaranteed not to occur. Furthermore, knowing the precise coordinates of all the tangency points allows us to represent each ingredient by some nice smooth arcs that meet smoothly. The result is the second picture on the right. Removing all the circles, what remains is the desired clean planar picture of 4_1.

[Andreev1] ^  A. Andreev, On convex polyhedra in Lobacevskii spaces (in Russian), Math. Sbornik USSR, Nov. Ser. 81 (1970) 445-478.

[Andreev2] ^  A. Andreev, On convex polyhedra of finite volume in Lobacevskii spaces (in Russian), Math. Sbornik USSR, Nov. Ser. 83 (1970) 256-260.