Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

First we craft a function to return the quadrant boundary based on Oppermann's Conjecture

a[n_] := (Mod[n, 2] + n^2 + 2 n)/4

Then we create a few lists

r = 10;
q = 1;
q1 = Table[a[q + 4 (n - 1)] <-> a[q + 4 (n)], {n, 1, r}];
q = 2;
q2 = Table[a[q + 4 (n - 1)] <-> a[q + 4 (n)], {n, 1, r}];
q = 3;
q3 = Table[a[q + 4 (n - 1)] <-> a[q + 4 (n)], {n, 1, r}];
q = 4;
q4 = Table[a[q + 4 (n - 1)] <-> a[q + 4 (n)], {n, 1, r}];
u = Flatten[Table[{(n - 1) <-> n}, {n, 2, a[4 + 4 r] + 1}]];

We produce the normal Ulam's Spiral

Graph[u]

Ulam's Spiral

We don't get the spiral when we attempt to combine the diagonal lists by using this

Graph[Union[u, q1, q2, q3, q4]]

Ulam Bad Spiral

How can we overlay the diagonals onto the spiral?

share|improve this question
    
Honestly, I'm quite surprised that Graph[u] produces a spiral! None of the built-in layout methods give this specific layout. It must be treating this graph as a special case. –  Szabolcs May 30 '12 at 10:57
    
I have linked from here math.stackexchange.com/questions/151902/… –  Fred Kline May 31 '12 at 6:42
add comment

1 Answer

up vote 11 down vote accepted

Starting with Graph[u] you can extract the coordinates of the vertices as follows

gr = Graph[u];
crds = AbsoluteOptions[gr, VertexCoordinates];

The graph including the diagonals can then be drawn according to

Graph[VertexList[gr], Union[u, q1, q2, q3, q4], crds]

Mathematica graphics

share|improve this answer
2  
And I was silly enough to sit down and figure out a closed form for the vertex coordinate based on the index ... of course just extract them! –  Szabolcs May 30 '12 at 11:16
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.