File:Double six.svg

Uploaded by Hedwig in Washington
Upload date 2017-01-03T03:59:23Z
MIME type image/svg+xml
Dimensions 635 × 612 px
File size 13.6 KB

Summary

Description
English: Schläfli's double six configuration — twelve lines with five intersection points per line and two lines per intersection point, intersecting in the pattern of a crown graph — inscribed on a cube, following an illustration by Hilbert and Cohn-Vossen in Geometry and the Imagination.
Date
Source Own work
Author David Eppstein
Other versions
SVG development
InfoField
 The SVG code is valid.
 This trigonometry was created with Python.
 and with Adobe.

Source code

The basic geometry of this image was created with the following Python script (much of which was copied from the one used for Gray configuration.svg). The transparency effects were added afterwards, using Adobe Illustrator.

from pyx import canvas,path,color
from math import sqrt,tan,asin
 
pov = (-22.7,7.1,9.3)
x,y,z = 2,1,0
radius = 0.12
scale = 10.0
g = 2.0
h = 2.5

vertexColor = [color.rgb.red]
edgeColor = [color.rgb.black]
cubeColor = [color.rgb.blue]
 
def distance(p,q):
    return sqrt(sum([(p[i]-q[i])**2 for i in (x,y,z)]))
 
def perspective(loc):
    dz = loc[z]-pov[z]
    return (loc[x]-pov[x])*scale/dz, (loc[y]-pov[y])*scale/dz
 
def vertex(p):
    lx,ly = perspective(p)
    prad = scale*1.1*tan(asin(radius/(distance(p,pov))))
    c.fill(path.circle(lx,ly,prad),vertexColor)
 
def edge(p,q):
    lx1,ly1 = perspective(p)
    lx2,ly2 = perspective(q)
    c.stroke(path.line(lx1,ly1,lx2,ly2),edgeColor)

def cube(p,q):
    lx1,ly1 = perspective(p)
    lx2,ly2 = perspective(q)
    c.stroke(path.line(lx1,ly1,lx2,ly2),cubeColor)

c = canvas.canvas()

def transform(point,spin,flip,mirror,turn):
    x,y,z = point
    if mirror:
        x,y,z = y,x,z
    if turn:
        x,y,z = -x,-y,z
    if flip:
        x,y,z = -y,x,-z
    for i in range(spin):
        x,y,z = y,z,x
    return x,y,z

points = set()
lines = set()
for s in (0,1,2):
    for f in (0,1):
        points.add(transform((0,0,g),s,f,0,0))
        for m in (0,1):
            for t in (0,1):
                points.add(transform((g,g/h,g),s,f,m,t))
                points.add(transform((g*h,g,g),s,f,m,t))
            lines.add((transform((g*h,g,g),s,f,m,0),
                       transform((-g*h,-g,g),s,f,m,0)))

for a in (-2,2):
    for b in (-2,2):
        cube((a,b,-2),(a,b,2))
        cube((a,-2,b),(a,2,b))
        cube((-2,a,b),(2,a,b))

for p,q in lines:
   edge(p,q)
 
for p in points:
    vertex(p)
 
c.writePDFfile("Double_six")

Licensing

Public domain I, the copyright holder of this work, release this work into the public domain. This applies worldwide.
In some countries this may not be legally possible; if so:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.

Captions

Add a one-line explanation of what this file represents

Items portrayed in this file

depicts

31 July 2010

13,930 byte

image/svg+xml

b9b3dd2b4d47ac5f2a529f6d2d67f78c6903b970

Category:Crown graph 6 Category:Files by User:David Eppstein from en.wikipedia Category:PD-self Category:Projective geometry Category:SVG created also with Adobe Illustrator Category:Self-published work Category:Valid SVG created with Python:Trigonometry