Archivo:Apollonian gasket symmetrical 3.svg

Contenido de la página no disponible en otros idiomas.
De Wikipedia, la enciclopedia libre

Ver la imagen en su resolución original((Imagen SVG, nominalmente 202 × 202 pixels, tamaño de archivo: 316 kB))

Resumen

Descripción
English: A radially-symmetric Apollonian gasket rendered using the algorithm at http://codegolf.stackexchange.com/questions/38450/draw-an-apollonian-gasket by CMG Lee.
Fecha
Fuente Trabajo propio
Autor Cmglee
Otras versiones
Lo siento, MediaWiki no es capaz de renderizar esta imagen correctamente. Algunos detalles pueden perderse o verse incorrectamente. Cuando incluyas esta imagen en una página de Wikipedia o de Wikimedia Commons, posiblemente desees usar el otro archivo hasta que se incremente el soporte.

File:Apollonian gasket symmetrical 3.svg File:Apollonian gasket symmetrical 3.png

Deutsch  English  español  italiano  日本語  한국어  македонски  português do Brasil  русский  sicilianu  slovenščina  简体中文  繁體中文  +/−

{{{svgImageLabel}}}

SVG desarrollo
InfoField
W3C grn 
El código fuente de esta imagen SVG es válido.
Python-logo-notext 
Este diagrama fue creado con Python
Código fuente
InfoField

Python code

#Please retain this and other comments, which contain Python code to generate this SVG. """

import re, math, colorsys

def fmt(string): ## string.format(**vars()) using tags {expression!format} by CMG Lee
 def f(tag): i_sep = tag.rfind('!'); return (re.sub('\.0+$', '', str(eval(tag[1:-1])))
  if (i_sep < 0) else ('{:%s}' % tag[i_sep + 1:-1]).format(eval(tag[1:i_sep])))
 return (re.sub(r'(?<!{){[^{}]+}', lambda m:f(m.group()), string)
         .replace('{{', '{').replace('}}', '}'))
def append(obj, string): return obj.append(fmt(string))
def tabbify(cellss, separator='|'):
 cellpadss = [list(rows) + [''] * (len(max(cellss, key=len)) - len(rows)) for rows in cellss]
 fmts = ['%%%ds' % (max([len(str(cell)) for cell in cols])) for cols in zip(*cellpadss)]
 return '\n'.join([separator.join(fmts) % tuple(rows) for rows in cellpadss])

def draw(circles):
 radius = abs(scale / circles[0])
 # radius += 20 if (radius == size) else -20
 if (radius > 0):
  colour = '#%06x' % (0xffffff * ((radius / size + 0.65) % 1))
  # colour = '#%02x%02x%02x' % tuple(
   # [int(255 * component) for component in colorsys.hsv_to_rgb((radius / size) ** 0.75, 1, 1)])
  # luma = 0xff * (radius / size) ** 0.25; colour = '#%02x%02x%02x' % (0, 0xff - luma * 3 // 4, luma)
  # out_mains.append('''<circles cx="%.0f" cy="%.0f" r="%.0f" stroke="%s"/>''' %
   # (scale * circles[1] / circles[0], scale * circles[2] / circles[0], radius, colour))
  # out_mains.append('''<use xlink:href="#s" transform="translate(%.0f,%.0f) scale(%.0f)"/>''' %
   # (scale * circles[1] / circles[0], scale * circles[2] / circles[0], radius))
  out_mains.append(
   '''<use xlink:href="#s" transform="translate(%.0f,%.0f) scale(%.0f)" fill="%s"/>''' %
   (scale * circles[1] / circles[0], scale * circles[2] / circles[0], radius, colour))

def distance(point1s,point2s):
 return ((point1s[0] - point2s[0]) ** 2 + (point1s[1] - point2s[1]) ** 2) ** 0.5

# centress = [[0,-17/15.*32], [-16/17.*32, 161/255.*32], [18/17.*33,48/85.*33]]
centress = [[math.sin(math.radians(angle * 120)),math.cos(math.radians(angle * 120))]
            for angle in range(3)]
(centre0s, centre1s, centre2s) = centress
d01 = distance(centre0s,centre1s)
d12 = distance(centre1s,centre2s)
d20 = distance(centre2s,centre0s)
(k0, k1, k2) = ((d01 - d12 + d20) / 2, (d01 + d12 - d20) / 2, (-d01 + d20 + d12) / 2)
k3 = k0 + k1 + k2 - 2 * (k0 * k1 + k1 * k2 + k2 * k0) ** 0.5
circless = [[k3,0.,0.],                         [k0,centre0s[0]/k0,centre0s[1]/k0],
            [k1,centre1s[0]/k1,centre1s[1]/k1], [k2,centre2s[0]/k2,centre2s[1]/k2]]
# circless = [[-6.,0.,0.], [10.,2/3.,0.], [15.,-3/2.,0.], [19.,-5/6.,2.]]
# circless = [[-15.,0.,0.], [32.,0.,-17/15.], [32.,-16/17.,161/255.], [33.,18/17.,48/85.]]
print(circless)
size     = 10000
scale    = -size * circless[0][0]
queue    = []
(out_defs, out_mains) = ([], [])

# append(out_mains, '''  <g fill="none" stroke="#000000" stroke-width="{size / 1000.}">''')
append(out_mains, '''  <g stroke="none">''')
for circles in circless:
 queue.append(circless)
 draw(circless[0])
 circless = circless[1:] + [circless[0]]
while (len(queue) > 0):
 circless = queue[0]
 circles  = [2 * (circless[0][i] + circless[1][i] + circless[2][i]) - circless[3][i]
             for i in range(3)]
 if (circles[0] < scale / 20):
  for i in range(6, 0, -2):
   queue.append([circless[i % 3], circless[(i - 1) % 3], circles, circless[(i - 2) % 3]])
 draw(circles)
 queue = queue[1:]
append(out_mains, '''  </g>''')

(x, width) = (-1.01 * size, 2.02 * size)
out_p      = fmt('''width="100%" height="100%" viewBox="{x} {x} {width} {width}"''')

## Compile everything into an .svg file
myself   = open(__file__, 'r').read() ## the contents of this very file
file_out = open(__file__[:__file__.rfind('.')] + '.svg', 'wb') ## *.* -> *.svg
try: ## use try/finally so that file is closed even if write fails
 file_out.write('''<?xml version="1.0" encoding="utf-8"?><!%s%s
%s%s%s\n%s%s\n%s%s''' % ('-', '-', ## because SVG comments cannot have 2 consecutive '-'s
  myself[:myself.find('width',myself.find('<svg'))], ## assume width specified before height/viewBox
  out_p, ## replace SVG width/height/viewBox with {out_p} & dynamic SVG blocks with {out*s} contents
  myself[myself.find ('>',myself.find('<svg')):
         myself.find ('\n',myself.find('BEGIN_'+'DYNAMIC_DEFS'))], '\n'.join(out_defs),
  myself[myself.rfind('\n',0,myself.find('END_'+'DYNAMIC_DEFS')):
         myself.find ('\n',myself.find('BEGIN_'+'DYNAMIC_MAIN'))], '\n'.join(out_mains),
  myself[myself.rfind('\n',0,myself.find('END_'+'DYNAMIC_MAIN')):]))
finally:
 file_out.close()

## SVG-Python near-polyglot framework version 3 by CMG Lee (March 2018)

Licencia

Yo, el titular de los derechos de autor de esta obra, la publico en los términos de la siguiente licencia:
w:es:Creative Commons
atribución compartir igual
Este archivo está disponible bajo la licencia Creative Commons Attribution-Share Alike 4.0 International.
Eres libre:
  • de compartir – de copiar, distribuir y transmitir el trabajo
  • de remezclar – de adaptar el trabajo
Bajo las siguientes condiciones:
  • atribución – Debes otorgar el crédito correspondiente, proporcionar un enlace a la licencia e indicar si realizaste algún cambio. Puedes hacerlo de cualquier manera razonable pero no de manera que sugiera que el licenciante te respalda a ti o al uso que hagas del trabajo.
  • compartir igual – En caso de mezclar, transformar o modificar este trabajo, deberás distribuir el trabajo resultante bajo la misma licencia o una compatible como el original.

Leyendas

Añade una explicación corta acerca de lo que representa este archivo
A radially-symmetric Apollonian gasket rendered using the algorithm at http://codegolf.stackexchange.com/questions/38450/draw-an-apollonian-gasket by CMG Lee.

Elementos representados en este archivo

representa a

image/svg+xml

6403925ea4dd41ff9dd19c5fd9d83595f154d43b

202 píxel

202 píxel

Historial del archivo

Haz clic sobre una fecha y hora para ver el archivo tal como apareció en ese momento.

Fecha y horaMiniaturaDimensionesUsuarioComentario
actual06:28 23 jun 2019Miniatura de la versión del 06:28 23 jun 2019202 × 202 (316 kB)JoKalliauerSorry User:Cmglee I had removed comments and desc and title, I now reinsered them, if there is still something missing, revert it or reupload it, also several defs seems to be not needed such as: 1) <filter id="filter_outline"> 2) <radialGradient id="grad" 3)<circles id="c" 4) <ellipse cx="0" cy="-45" rx="70" ry="50" fill="url(#grad_highlight)" fill-opacity="0.75"/>
20:27 22 jun 2019Miniatura de la versión del 20:27 22 jun 2019202 × 202 (311 kB)JoKalliaueren:Wikipedia:SVG_help#Server_error_when_generating_SVG_thumbnail deledted invalid line <circles id="c" r="1" fill="url(#grad)" stroke="none"/>, there is no plural, reduced preview-size
00:33 1 abr 2019Miniatura de la versión del 00:33 1 abr 2019512 × 512 (330 kB)CmgleeColour by radius.
00:03 1 abr 2019Miniatura de la versión del 00:03 1 abr 2019512 × 512 (330 kB)CmgleeFix symmetry.
11:01 30 mar 2019Miniatura de la versión del 11:01 30 mar 2019512 × 512 (330 kB)CmgleeUse File:Kugelball.svg shading.
09:23 30 mar 2019Miniatura de la versión del 09:23 30 mar 2019512 × 512 (270 kB)CmgleeUser created page with UploadWizard

No hay páginas que enlacen a este archivo.

Uso global del archivo

Las wikis siguientes utilizan este archivo:

Metadatos