jueves, 19 de febrero de 2015

Solamente pi

(es) Solamente pi

(eo) Nur pi

Solamente pi

http://dx.doi.org/10.13140/RG.2.2.34092.90243

Descripción artística:

Dibujo de muchos decimales de π con una circunferencia, un diámetro y un radián.

Motivación:

La maravilla de π y su omniprescencia en la naturaleza.

Descripción técnica:

En el fondo una circunferencia de longitud L y un diámetro de longitud D que proveen la definición de π = L D .
Luego está sombreado un segmento circular de un radián de amplitud. Un radián es la medida del ángulo central en una circunferencia que abarca un arco cuya longitud es igual a la del radio.
Encima de todo están los primeros decimales de π .

Archivos

Código (Python):

#!/usr/bin/env python
# coding: utf-8

# Copyright 2015 Eduardo Adam Navas López
# Este programa es Software Libre liberado bajo la licencia GNU GPLv3 o su versión más reciente:
# http://www.gnu.org/licenses/gpl.html

import pygame
import pygame.gfxdraw
import math
import escala

prueba = True
prueba = False #Descomentar para generar versión grande
FUENTE = 'droid sans mono'

if prueba:
 TAM = 1000
else:
 TAM = 8000

RADIO_CIRCULO = (TAM/2) * 9 / 10
GRUESO_CIRCUNFERENCIA = TAM * 1 / 100

COLOR_FONDO = (255,255,255)
COLOR_TEXTO = pygame.Color(0x90, 0x90, 0x90)
COLOR_CIRCUNFERENCIA = pygame.Color(0xe7,0xa8,0xa8)
COLOR_DIAMETRO = pygame.Color(0xa9,0xa9,0xe8)
COLOR_RADIAN = pygame.Color(0xa9,0xe8,0xa9)

ANCHO = TAM
ALTO  = TAM

def dibujarCircunferencia(xc, yc, re, ri, color):
 """Dibuja una circunferencia con centro (xc,yc)
 y radio exterior re e interior ri.
 """
 global imagen
 if re <= ri: return #No funcionaría el algoritmo
 def marcarPixel(x,y):
  imagen.set_at(( x+xc, y+yc), color)
  imagen.set_at(( x+xc,-y+yc), color)
  imagen.set_at((-x+xc, y+yc), color)
  imagen.set_at((-x+xc,-y+yc), color)
  imagen.set_at(( y+xc, x+yc), color)
  imagen.set_at(( y+xc,-x+yc), color)
  imagen.set_at((-y+xc, x+yc), color)
  imagen.set_at((-y+xc,-x+yc), color)
 def marcarLineaH(xi,xf,y):
  i = xi
  while i<=xf:
   marcarPixel(i,y)
   i = i+1
 limites = {}
 x = 0
 y = re
 d = 1-re
 while y>x:
  if d<0: data-blogger-escaped-d="1-ri" data-blogger-escaped-else:="" data-blogger-escaped-if="" data-blogger-escaped-limites.has_key="" data-blogger-escaped-limites="" data-blogger-escaped-none="" data-blogger-escaped-one="" data-blogger-escaped-while="" data-blogger-escaped-x-y="" data-blogger-escaped-x="" data-blogger-escaped-y="">x:
  if d<0: data-blogger-escaped--="" data-blogger-escaped-2="" data-blogger-escaped-altotexto="m[0][3]" data-blogger-escaped-anchotexto="" data-blogger-escaped-archivo:="" data-blogger-escaped-archivo="open(" data-blogger-escaped-aritm="" data-blogger-escaped-c="" data-blogger-escaped-cada_y="" data-blogger-escaped-color_circunferencia="" data-blogger-escaped-color_diametro="" data-blogger-escaped-color_radian="" data-blogger-escaped-color_texto="" data-blogger-escaped-con="" data-blogger-escaped-d="" data-blogger-escaped-de="" data-blogger-escaped-def="" data-blogger-escaped-dibuja="" data-blogger-escaped-dibujar="" data-blogger-escaped-dibujarcircunferencia="" data-blogger-escaped-dibujarsegmento="" data-blogger-escaped-digito="" data-blogger-escaped-egmento="" data-blogger-escaped-elif="" data-blogger-escaped-else:="" data-blogger-escaped-enerar="" data-blogger-escaped-exterior="" data-blogger-escaped-exto="" data-blogger-escaped-f.render="" data-blogger-escaped-f="pygame.font.SysFont(FUENTE," data-blogger-escaped-flotante.="" data-blogger-escaped-for="" data-blogger-escaped-forma="" data-blogger-escaped-genes="" data-blogger-escaped-gitos="" data-blogger-escaped-global="" data-blogger-escaped-grueso_circunferencia="" data-blogger-escaped-i="" data-blogger-escaped-if="" data-blogger-escaped-im="" data-blogger-escaped-imagen.blit="" data-blogger-escaped-imagen.fill="" data-blogger-escaped-imagen="" data-blogger-escaped-img="" data-blogger-escaped-in="" data-blogger-escaped-ineficiente="" data-blogger-escaped-inicio="" data-blogger-escaped-int="" data-blogger-escaped-is="" data-blogger-escaped-las="" data-blogger-escaped-letra="" data-blogger-escaped-limites.has_key="" data-blogger-escaped-limites.iteritems="" data-blogger-escaped-limites="" data-blogger-escaped-linea.strip="" data-blogger-escaped-linea="" data-blogger-escaped-los="" data-blogger-escaped-m="f.metrics(" data-blogger-escaped-marcarlineah="" data-blogger-escaped-math.sin="" data-blogger-escaped-metro="" data-blogger-escaped-n.="" data-blogger-escaped-none:="" data-blogger-escaped-none="" data-blogger-escaped-oner="" data-blogger-escaped-oordenada="" data-blogger-escaped-pi.txt="" data-blogger-escaped-procedimiento="" data-blogger-escaped-pygame.draw.line="" data-blogger-escaped-pygame.gfxdraw.hline="" data-blogger-escaped-r="" data-blogger-escaped-radi="" data-blogger-escaped-radio_circulo="" data-blogger-escaped-range="" data-blogger-escaped-rculo="" data-blogger-escaped-salir="False" data-blogger-escaped-segmento="" data-blogger-escaped-ste="" data-blogger-escaped-str="" data-blogger-escaped-t2:="" data-blogger-escaped-t2="" data-blogger-escaped-tam="" data-blogger-escaped-tg="" data-blogger-escaped-tica="" data-blogger-escaped-true="" data-blogger-escaped-uente="" data-blogger-escaped-un="" data-blogger-escaped-una="" data-blogger-escaped-utiliza="" data-blogger-escaped-while="" data-blogger-escaped-x-y="" data-blogger-escaped-x1="" data-blogger-escaped-x2="" data-blogger-escaped-x="" data-blogger-escaped-xf="" data-blogger-escaped-xi="" data-blogger-escaped-y-t2="" data-blogger-escaped-y="" data-blogger-escaped-zip="">= TAM:
    y += altotexto
    x = anchotexto*2
   if y+altotexto >= TAM:
    salir = True
    break
  if salir: break



if __name__ == "__main__":
 global imagen

 pygame.init()

 imagen = pygame.Surface((ANCHO, ALTO))
 
 dibujar()
 
 pygame.image.save(imagen, "pi1000.png" if prueba else "pi.png")

No hay comentarios:

Publicar un comentario