Файл:Regular divisibility lattice.svg

Материал из testwiki
Перейти к навигации Перейти к поиску
Исходный файл (SVG-файл, номинально 1363 × 809 пкс, размер файла: 13 КБ)

Этот файл находится на Викискладе и может использоваться другими проектами. Информация с его страницы описания приведена ниже.

Краткое описание

Описание 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].
Дата 14 марта 2007 (дата первоначальной загрузки файла на вики)
Источник Перенесено с en.wikipedia на Викисклад.
Автор David Eppstein из английский Википедия

Лицензирование

Public domain Автор этого произведения, David Eppstein из английский Википедия, передаёт его в общественное достояние. Это разрешение действует по всему миру.
В некоторых странах это не может быть возможно юридически, в таком случае:
David Eppstein предоставляет любому право использовать данное произведение в любых целях, без каких-либо условий, если только такие условия не требуются по закону.

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>"

Исходный журнал загрузок

Первоначальная страница описания находилась здесь. Все нижеперечисленные имена участников относятся к 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].

Краткие подписи

Добавьте однострочное описание того, что собой представляет этот файл

Элементы, изображённые на этом файле

изображённый объект

История файла

Нажмите на дату/время, чтобы увидеть версию файла от того времени.

Дата/времяМиниатюраРазмерыУчастникПримечание
текущий03:57, 13 марта 2010Миниатюра для версии от 03:57, 13 марта 20101363 × 809 (13 КБ)wikimediacommons>David EppsteinFix fonts

Следующая страница использует этот файл: