Archivo:Sphericon.stl

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

Ver la imagen en su resolución original(5120 × 2880 píxeles; tamaño de archivo: 31 kB; tipo MIME: application/sla)

View Sphericon.stl  on viewstl.com

Resumen

Descripción
English: An ASCII STL of a sphericon by CMG Lee.
Fecha
Fuente Trabajo propio
Autor Cmglee
#!/usr/bin/env python

solid_name  = 'ASCII_STL_of_a_sphericon_by_CMG_Lee'
n_face_side = 60
r           = 1000

import re, io, math
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 roundm(x, multiple=1):
 if   (isinstance(x, tuple)): return tuple(roundm(list(x), multiple))
 elif (isinstance(x, list )): return [roundm(x_i, multiple) for x_i in x]
 else: return int(math.floor(float(x) / multiple + 0.5)) * multiple

facetss = []
## Find facets
for i_face_side in range(n_face_side + 1):
 rad = math.pi * i_face_side / n_face_side
 (r_sin,r_cos) = roundm([r * function(rad) for function in [math.sin,math.cos]])
 if (i_face_side > 0):
  facetss.append([1000 + i_face_side,  r, 0,0, 0,-r_cos_old,-r_sin_old, 0,-r_cos,-r_sin])
  facetss.append([2000 + i_face_side, -r, 0,0, 0, r_cos_old,-r_sin_old, 0, r_cos,-r_sin])
  facetss.append([3000 + i_face_side,  0, r,0, -r_cos_old,0, r_sin_old, -r_cos,0, r_sin])
  facetss.append([4000 + i_face_side,  0,-r,0,  r_cos_old,0, r_sin_old,  r_cos,0, r_sin])
 (r_sin_old,r_cos_old) = (r_sin,r_cos)
## Calculate normals
for facets in facetss:
 us = [facets[i_xyz + 3] - facets[i_xyz] for i_xyz in range(3)]
 vs = [facets[i_xyz] - facets[i_xyz + 6] for i_xyz in range(3)]
 normals = [us[1]*vs[2] - us[2]*vs[1], us[2]*vs[0] - us[0]*vs[2], us[0]*vs[1] - us[1]*vs[0]]
 normal_length = sum([component * component      for component in normals]) ** 0.5
 facets += ['%.5f' % (component / normal_length) for component in normals]
facetss = sorted(facetss)
print(tabbify([['s.f'] + ['%s%d' % (xyz, n) for n in range(3) for xyz in list('XYZ')] +
               ['N%s' % (xyz) for xyz in list('xyz')]] + facetss))
## Compile STL
outs = [fmt('''\
 facet normal {facets[10]} {facets[11]} {facets[12]}
  outer loop
   vertex {facets[1]} {facets[2]} {facets[3]}
   vertex {facets[4]} {facets[5]} {facets[6]}
   vertex {facets[7]} {facets[8]} {facets[9]}
  endloop
 endfacet''') for facets in facetss]
with io.open(__file__[:__file__.rfind('.')] + '.stl', 'w', newline='\n') as f_out:
 f_out.write('solid %s\n%s\nendsolid %s\n\n## Please keep Python script below\n%s' %
             (solid_name, '\n'.join(outs), solid_name, io.open(__file__).read()))

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.
Wikimedia Foundation
La persona que subió este archivo aceptó la licencia de patente 3D de la Fundación Wikimedia: Este archivo y cualquier objeto en 3D representado en el archivo son fruto de mi propio trabajo. Por medio de la presente otorgo a cada usuario, fabricante o distribuidor del objeto representado en el archivo una licencia a nivel mundial, libre de regalías, plenamente liberada, no exclusiva, irrevocable y perpetua sin costo adicional en virtud de cualquier patente o solicitud de patente que sea de mi propiedad actualmente o en el futuro, para hacer, solicitar que se haga, usar, ofrecer en venta, vender, importar y distribuir este archivo y cualquier objeto 3D representado en el archivo que de otra manera infringiría cualquier reclamo de cualquier patente que yo tenga ahora o en el futuro.

Téngase en cuenta que en caso de diferencias de significado o interpretación entre la versión original en inglés de esta licencia y una traducción, la versión original en inglés tiene prioridad.

Leyendas

Añade una explicación corta acerca de lo que representa este archivo
An ASCII STL of a sphericon

Elementos representados en este archivo

representa a

Historial del archivo

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

Fecha y horaMiniaturaDimensionesUsuarioComentario
actual01:47 16 mar 2018Miniatura de la versión del 01:47 16 mar 20185120 × 2880 (31 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: