File:Regular divisibility lattice.svg
From Wikimedia Commons, the free media repository
Regular_divisibility_lattice.svg (SVG file, nominally 1,363 × 809 pixels, file size: 13 KB)
| Description |
A Hasse diagram of divisibility relationships among regular numbers up to 400. As shown by the horizontal light red lines, the vertical position of each number is proportional to its logarithm. Inspired by similar diagrams in a paper by Kurenniemi [1]. |
|---|---|
| Date |
2007-03-14 (original upload date) |
| Source |
Originally from en.wikipedia; description page is/was here. |
| Author |
Original uploader was David Eppstein at en.wikipedia |
| Permission (Reusing this image) |
Released into the public domain (by the author). |
[edit] Licensing
| This image has been (or is hereby) released into the public domain by its author, David Eppstein at the wikipedia project. This applies worldwide. In case this is not legally possible: العربية | Català | Česky | Dansk | Deutsch | Ελληνικά | English | Eesti | Suomi | Français | עברית | Italiano | 한국어 | Lietuvių | Македонски | Plattdüütsch | Nederlands | Polski | Română | Русский | Српски / Srpski | Svenska | ไทย | Vèneto | 中文 | 中文(简体) | 中文(繁體) | +/− |
[edit] Source code
The Python source code for generating this image:
from math import log
limit = 400
radius = 17
margin = 4
xscale = yscale = 128
skew = 0.285
def A051037():
yield 1
seq = [1]
spiders = [(2,2,0,0),(3,3,0,1),(5,5,0,2)]
while True:
x,p,i,j = min(spiders)
if x != seq[-1]:
yield x
seq.append(x)
spiders[j] = (p*seq[i+1],p,i+1,j)
def nfactors(h,p):
nf = 0
while h % p == 0:
nf += 1
h //= p
return nf
seq = []
for h in A051037():
if h > limit:
break
seq.append((h,nfactors(h,2),nfactors(h,3),nfactors(h,5)))
leftmost = max([k for h,i,j,k in seq])
rightmost = max([j for h,i,j,k in seq])
leftwidth = int(0.5 + log(5) * leftmost * xscale + radius + margin)
rightwidth = int(0.5 + log(3) * rightmost * xscale + radius + margin)
width = leftwidth + rightwidth
height = int(0.5 + log(limit) * yscale + 2*(radius + margin))
def place(h,i,j,k):
# logical coordinates
x = j * log(3) - k * log(5) + i * skew
y = log(h)
# physical coordinates
x = (x*xscale) + leftwidth
y = (-y*yscale) + height - radius - margin
return (x,y)
print '''<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="%d" height="%d">''' % (width,height)
print ' <g style="fill:none;stroke:#ffaaaa;">'
l = 1
base = 1
while l <= limit:
y = -yscale*log(l) + height - radius - margin
print ' <path d="M0,%0.2fL%d,%0.2f"/>' % (y,width,y)
l += base
if l == 10*base:
base = l
print " </g>"
print ' <g style="fill:none;stroke-width:1.5;stroke:#0000cc;">'
def drawSegment(p,q):
x1,y1=p
x2,y2=q
print ' <path d="M%0.2f,%0.2fL%0.2f,%0.2f"/>' % (x1,y1,x2,y2)
for h,i,j,k in seq:
x,y = place(h,i,j,k)
if i > 0:
drawSegment(place(h//2,i-1,j,k),(x,y))
if j > 0:
drawSegment(place(h//3,i,j-1,k),(x,y))
if k > 0:
drawSegment(place(h//5,i,j,k-1),(x,y))
print " </g>"
print ' <g style="fill:#ffffff;stroke:#000000;">'
for h,i,j,k in seq:
x,y = place(h,i,j,k)
print ' <circle cx="%0.2f" cy="%0.2f" r="%d"/>' % (x,y,radius)
# pairs of first value with size: size of that value
fontsizes = {1:33, 5:30, 10:27, 20:24, 100:20, 200:18}
for h,i,j,k in seq:
x,y = place(h,i,j,k)
if h in fontsizes:
print " </g>"
print ' <g style="font-family:Times;font-size:%d;text-anchor:middle;">' % fontsizes[h]
lower = fontsizes[h] / 3.
print ' <text x="%0.2f" y="%0.2f">%d</text>' %(x,y+lower,h)
print " </g>"
print "</svg>"
[edit] Original upload log
(All user names refer to en.wikipedia)
- 2007-03-14 05:08 David Eppstein 1363×809×0 (13167 bytes) A [[Hasse diagram]] of [[divisibility]] relationships among [[regular number]]s up to 400. Inspired by similar diagrams in a paper by Kurenniemi [http://www.beige.org/projects/dimi/CSDL2.pdf].
File history
Click on a date/time to view the file as it appeared at that time.
| Date/Time | Thumbnail | Dimensions | User | Comment | |
|---|---|---|---|---|---|
| current | 22:10, 24 July 2007 | 1,363×809 (13 KB) | David Eppstein (talk | contribs) | ({{Information |Description=A en:Hasse diagram of en:divisibility relationships among en:regular numbers up to 400. As shown by the horizontal light red lines, the vertical position of each number is proportional to its en:logarithm. In) |
- Edit this file using an external application (See the setup instructions for more information)
File links
The following page links to this file:
Global file usage
The following other wikis use this file:
- Usage of Regular divisibility lattice.svg on enwiki