Archivo:Jessen icosahedron.stl
Contenido de la página no disponible en otros idiomas.
Herramientas
Acciones
General
En otros proyectos
Apariencia
De Wikipedia, la enciclopedia libre
Tamaño de esta previsualización PNG del archivo STL: 800 × 600 píxeles. Otras resoluciones: 320 × 240 píxeles · 640 × 480 píxeles · 1024 × 768 píxeles · 1280 × 960 píxeles · 2560 × 1920 píxeles · 5120 × 3840 píxeles.
Ver la imagen en su resolución original (5120 × 2880 píxeles; tamaño de archivo: 1 kB; tipo MIME: application/sla)
Este es un archivo de Wikimedia Commons, un depósito de contenido libre hospedado por la Fundación Wikimedia. Más abajo se reproduce su página de descripción con la información sobre su origen y licencia. |
View Jessen icosahedron.stl on viewstl.com
Resumen
DescripciónJessen icosahedron.stl | Jessen's icosahedron, made into a colour STL by CMG Lee. |
Fuente | Trabajo propio |
Autor | Cmglee |
Python source
#!/usr/bin/env python
import re, struct, 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 hex_rgb(colour): ## convert [#]RGB to #RRGGBB and [#]RRGGBB to #RRGGBB
return '#%s' % (colour if len(colour) > 4 else ''.join([c * 2 for c in colour])).lstrip('#')
def viscam_colour(colour):
colour_hex = hex_rgb(colour)
colour_top5bits = [int(colour_hex[i:i+2], 16) >> 3 for i in range(1,7,2)]
return (1 << 15) + (colour_top5bits[0] << 10) + (colour_top5bits[1] << 5) + colour_top5bits[2]
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
def flatten(lss): return [l for ls in lss for l in ls]
def rotate(facetss, degs, colour=None): ## around x then y then z axes
(deg_x,deg_y,deg_z) = degs
(sin_x,cos_x) = (math.sin(math.radians(deg_x)), math.cos(math.radians(deg_x)))
(sin_y,cos_y) = (math.sin(math.radians(deg_y)), math.cos(math.radians(deg_y)))
(sin_z,cos_z) = (math.sin(math.radians(deg_z)), math.cos(math.radians(deg_z)))
facet_rotatess = []
for facets in facetss:
facet_rotates = []
for i_point in range(4):
(x, y, z) = [facets[3 * i_point + i_xyz] for i_xyz in range(3)]
if (x is None or y is None or z is None):
facet_rotates += [x, y, z]
else:
(y, z) = (y * cos_x - z * sin_x, y * sin_x + z * cos_x) ## rotate about x
(x, z) = (x * cos_y + z * sin_y, -x * sin_y + z * cos_y) ## rotate about y
(x, y) = (x * cos_z - y * sin_z, x * sin_z + y * cos_z) ## rotate about z
facet_rotates += [round(value, 9) for value in [x, y, z]]
facet_rotatess.append(facet_rotates + [facets[12] if colour is None else colour])
return facet_rotatess
def translate(facetss, ds, colour=None): ## ds = (dx,dy,dz)
return [facets[:3] + [facets[3 * i_point + i_xyz] + ds[i_xyz]
for i_point in range(1,4) for i_xyz in range(3)] +
[facets[12] if colour is None else colour] for facets in facetss]
def scale(facetss, ss, colour=None): ## ss = (sx,sy,sz)
return [facets[:3] + [facets[3 * i_point + i_xyz] * ss[i_xyz]
for i_point in range(1,4) for i_xyz in range(3)] +
[facets[12] if colour is None else colour] for facets in facetss]
def make_facetss(lotssss):
facetss = []
for facess in lotssss['faces']:
vertexs = facess['vertexs']
vertex_facetss = [[float(xyz) for xyz in lotssss['vertexs'][i_vertex]['xyz']]
for i_vertex in (vertexs[::-1] if (facess['flip']) else vertexs)]
facetss.append(flatten([(None,0,0)] + vertex_facetss + [[facess['colour']]]))
return facetss
def finish(facetss, header):
## Calculate normals
for facets in facetss:
if (facets[0] is None or facets[1] is None or facets[2] is None):
us = [facets[i_xyz + 9] - facets[i_xyz + 6] for i_xyz in range(3)]
vs = [facets[i_xyz + 6] - facets[i_xyz + 3] 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[:3] = [round(component / normal_length, 10) for component in normals]
print(tabbify([['N%s' % (xyz ) for xyz in list('xyz')] +
['%s%d' % (xyz, n) for n in range(3) for xyz in list('XYZ')] + ['RGB']] + facetss))
## Compile STL
outss = ([[('STL\n\n%-73s\n\n' % (header[:73])).encode('utf-8'), struct.pack('<L',len(facetss))]] +
[[struct.pack('<f',float(value)) for value in facets[:12]] +
[struct.pack('<H',0 if (len(facets) <= 12) else
viscam_colour(facets[12]))] for facets in facetss])
out = b''.join([bytes(out) for outs in outss for out in outs])
# out += ('\n\n## Python script to generate STL\n\n%s\n' % (open(__file__).read())).encode('utf-8')
print("# bytes:%d\t# facets:%d\ttitle:\"%-73s\"" % (len(out), len(facetss), header[:73]))
with open(__file__[:__file__.rfind('.')] + '.stl', 'wb') as f_out: f_out.write(out)
corner_lotssss = {'vertexs': [{'xyz':(0,2,1)},
{'xyz':(2,1,0)},
{'xyz':(1,0,2)}],
'faces': [{'vertexs':[0,1,2], 'flip':True , 'colour':'#fff'}]}
side_lotssss = {'vertexs': [{'xyz':( 0,2,1)},
{'xyz':( 2,1,0)},
{'xyz':(-2,1,0)}],
'faces': [{'vertexs':[0,1,2], 'flip':True , 'colour':'#66f'}]}
corner_facetss = make_facetss(corner_lotssss)
corner_facetss += scale (corner_facetss, (-1,1,1), '#eee')
corner_facetss += scale (corner_facetss, (1,-1,1), '#ccc')
corner_facetss += scale (corner_facetss, (1,1,-1), '#999')
side_facetss = make_facetss(side_lotssss)
side_facetss += scale (side_facetss, (1,1,-1))
side_facetss += rotate (side_facetss, (0,90,90), '#f00') + \
rotate (side_facetss, (90,0,90), '#0c9')
side_facetss += scale (side_facetss, (-1,-1,-1))
finish(corner_facetss + side_facetss, "Jessen's icosahedron, made into a colour STL by CMG Lee.")
Licencia
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. |
Yo, titular de los derechos de autor de esta obra, la publico en los términos de las siguientes licencias:
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.
Se autoriza la copia, distribución y modificación de este documento bajo los términos de la licencia de documentación libre GNU, versión 1.2 o cualquier otra que posteriormente publique la Fundación para el Software Libre; sin secciones invariables, textos de portada, ni textos de contraportada. Se incluye una copia de la dicha licencia en la sección titulada Licencia de Documentación Libre GNU.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
Puedes usar la licencia que prefieras.
Elementos representados en este archivo
representa a
Algún valor sin elemento de Wikidata
Historial del archivo
Haz clic sobre una fecha y hora para ver el archivo tal como apareció en ese momento.
Fecha y hora | Miniatura | Dimensiones | Usuario | Comentario | |
---|---|---|---|---|---|
actual | 03:40 6 feb 2022 | 5120 × 2880 (1 kB) | Cmglee | Swap Y and Z axes to make thumbnail orientation similar to File:Translucent_Jessen_icosahedron.svg | |
01:07 27 ene 2022 | 5120 × 2880 (1 kB) | Cmglee | {{Information |Description=Jessen's icosahedron, made into a colour STL by CMG Lee. |Source={{own}} |Date= |Author= Cmglee |Permission= |other_versions= }} Category:STL files by cmglee Category:Jessen's icosahedron |
Usos del archivo
La siguiente página usa este archivo:
Uso global del archivo
Las wikis siguientes utilizan este archivo:
- Uso en en.wikipedia.org
- Uso en ja.wikipedia.org