File:Double six.svg

From testwiki
Jump to navigation Jump to search

Original file(SVG file, nominally 635 × 612 pixels, file size: 14 KB)

This file is from Wikimedia Commons and may be used by other projects. The description on its file description page there is shown below.

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
 Double six - new.svg

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 File: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

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current04:59, 3 January 2017Thumbnail for version as of 04:59, 3 January 2017635 × 612 (14 KB)wikimediacommons>Hedwig in WashingtonReverted to version as of 23:29, 31 July 2010 (UTC)

The following page uses this file: