Archivo:Csaszar polyhedron.stl
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: 784 bytes; 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 Csaszar polyhedron.stl on viewstl.com
Resumen
DescripciónCsaszar polyhedron.stl |
English: Császár polyhedron (one of only two diagonal-less polyhedra) by CMG Lee. |
Fecha | |
Fuente | Trabajo propio |
Autor | Cmglee |
Python source
#!/usr/bin/env python
# header = 'Cs\xe1sz\xe1r polyhedron (one of only two diagonal-less polyhedra) by CMG Lee.' ## non-ASCII characters hex-encoded
header = 'Csaszar polyhedron (one of only two diagonal-less polyhedra) by CMG Lee.'
vertexsss = [ ## [i_vertex][property][x,y,z etc]
{'xyz':(-6, 6,-6), 'colour':'#c00', 'label':'G'},
{'xyz':(-6,-6,-5), 'colour':'#090', 'label':'C'},
{'xyz':(-2,-3, 0), 'colour':'#069', 'label':'D'},
{'xyz':( 2, 3, 0), 'colour':'#c60', 'label':'E'},
{'xyz':( 6, 6,-5), 'colour':'#c0f', 'label':'F'},
{'xyz':( 6,-6,-6), 'colour':'#00f', 'label':'B'},
{'xyz':( 0, 0, 6), 'colour':'#000', 'label':'A'}]
facesss = [ ## [i_face][property][i_vertex etc]
{'vertexs':[0,2,3], 'flip':True , 'colour':'#f00'}, ## face down 1
{'vertexs':[2,3,5], 'flip':False, 'colour':'#00f'}, ## face down 2
{'vertexs':[1,2,4], 'flip':False, 'colour':'#069'}, ## bottom inner 1
{'vertexs':[1,3,4], 'flip':True , 'colour':'#960'}, ## bottom inner 2
{'vertexs':[1,2,6], 'flip':True , 'colour':'#0f0'}, ## top inner 1
{'vertexs':[3,4,6], 'flip':False, 'colour':'#f0f'}, ## top inner 2
{'vertexs':[2,4,5], 'flip':True , 'colour':'#09f'}, ## bottom outer 2
{'vertexs':[0,1,3], 'flip':False, 'colour':'#f90'}, ## bottom outer 2
{'vertexs':[0,2,6], 'flip':False, 'colour':'#ff0'}, ## top outer 1
{'vertexs':[3,5,6], 'flip':True , 'colour':'#ccc'}, ## top outer 2
{'vertexs':[0,4,6], 'flip':True , 'colour':'#f66'}, ## outside 1
{'vertexs':[1,5,6], 'flip':False, 'colour':'#66f'}, ## outside 2
{'vertexs':[0,4,5], 'flip':False, 'colour':'#606'}, ## base 1
{'vertexs':[0,1,5], 'flip':True , 'colour':'#060'}] ## base 2
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): ## 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)
return facet_rotatess
def translate(facetss, ds): ## 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)]
for facets in facetss]
## Add facets
facetss = []
for facess in facesss:
vertexs = facess['vertexs']
vertex_facetss = [vertexsss[i_vertex]['xyz']
for i_vertex in (vertexs[::-1] if (facess['flip']) else vertexs)]
facetss.append(flatten([(None,0,0)] + vertex_facetss + [[facess['colour']]]))
# facetss = [facets[:3] + facets[6:9] + facets[3:6] + facets[9:] for facets in facetss]
## 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)
Licencia
Yo, el titular de los derechos de autor de esta obra, la publico en los términos de la siguiente licencia:
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.
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. |
Elementos representados en este archivo
representa a
Algún valor sin elemento de Wikidata
28 mar 2018
application/sla
56ddd83cdaa62c4b90e9c8c1be46ab911a0c744a
784 byte
2880 píxel
5120 píxel
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 | 08:45 29 mar 2018 | 5120 × 2880 (784 bytes) | Cmglee | Rotate, and reduce height to better show hole. | |
19:37 28 mar 2018 | 5120 × 2880 (784 bytes) | Cmglee | User created page with UploadWizard |
Usos del archivo
No hay páginas que enlacen a este archivo.
Uso global del archivo
Las wikis siguientes utilizan este archivo:
- Uso en en.wikipedia.org
- Uso en fr.wikipedia.org
- Uso en www.wikidata.org
- Uso en zh.wikipedia.org