Fichier:Csaszar polyhedron.stl
Le contenu de la page n’est pas pris en charge dans d’autres langues.
Apparence
![Fichier:Csaszar polyhedron.stl](http://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Csaszar_polyhedron.stl/800px-Csaszar_polyhedron.stl.png)
Taille de cet aperçu PNG pour ce fichier STL : 800 × 600 pixels. Autres résolutions : 320 × 240 pixels | 640 × 480 pixels | 1 024 × 768 pixels | 1 280 × 960 pixels | 2 560 × 1 920 pixels | 5 120 × 3 840 pixels.
Fichier d’origine (5 120 × 2 880 pixels, taille du fichier : 784 octet, type MIME : application/sla)
Ce fichier et sa description proviennent de Wikimedia Commons.
View Csaszar polyhedron.stl on viewstl.com
Description
DescriptionCsaszar polyhedron.stl |
English: Császár polyhedron (one of only two diagonal-less polyhedra) by CMG Lee. |
Date | |
Source | Travail personnel |
Auteur | 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)
Conditions d’utilisation
Moi, en tant que détenteur des droits d’auteur sur cette œuvre, je la publie sous la licence suivante :
![w:fr:Creative Commons](https://upload.wikimedia.org/wikipedia/commons/thumb/7/79/CC_some_rights_reserved.svg/90px-CC_some_rights_reserved.svg.png)
![paternité](https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Cc-by_new_white.svg/24px-Cc-by_new_white.svg.png)
![partage à l’identique](https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Cc-sa_white.svg/24px-Cc-sa_white.svg.png)
Ce fichier est sous la licence Creative Commons Attribution – Partage dans les Mêmes Conditions 4.0 International.
- Vous êtes libre :
- de partager – de copier, distribuer et transmettre cette œuvre
- d’adapter – de modifier cette œuvre
- Sous les conditions suivantes :
- paternité – Vous devez donner les informations appropriées concernant l'auteur, fournir un lien vers la licence et indiquer si des modifications ont été faites. Vous pouvez faire cela par tout moyen raisonnable, mais en aucune façon suggérant que l’auteur vous soutient ou approuve l’utilisation que vous en faites.
- partage à l’identique – Si vous modifiez, transformez, ou vous basez sur cette œuvre, vous devez distribuer votre contribution sous la même licence ou une licence compatible avec celle de l’original.
![]() |
La personne ayant téléversé ce fichier a accepté de le publier sous la licence de brevet 3D de la Fondation Wikimedia : Ce fichier et tout objet 3D décrit dans le fichier sont issus de mon propre travail. Par les présentes, j’accorde à chaque utilisateur, fabricant ou distributeur de l’objet décrit dans le fichier une licence mondiale, libre de droits, intégralement acquittée, non exclusive, irrévocable et perpétuelle, sans frais supplémentaires en vertu d’un quelconque brevet ou d’une quelconque demande de brevet que je détiendrais actuellement ou à l’avenir, afin de leur permettre de fabriquer, faire fabriquer, utiliser, mettre en vente, vendre, importer et distribuer ce fichier et tout objet 3D décrit dans ce fichier sans que ceux-ci ne portent atteinte aux éventuelles revendications de brevet que je peux faire valoir actuellement ou que je pourrai faire valoir à l’avenir. Veuillez noter qu’en présence de quelconques différences de sens ou d’interprétation entre la version originale en anglais et une version traduite, la version originale en anglais prévaudra. |
Légendes
Ajoutez en une ligne la description de ce que représente ce fichier
Éléments décrits dans ce fichier
dépeint
Valeur sans élément de Wikidata
28 mars 2018
application/sla
56ddd83cdaa62c4b90e9c8c1be46ab911a0c744a
784 octet
2 880 pixel
5 120 pixel
Historique du fichier
Cliquer sur une date et heure pour voir le fichier tel qu'il était à ce moment-là.
Date et heure | Vignette | Dimensions | Utilisateur | Commentaire | |
---|---|---|---|---|---|
actuel | 29 mars 2018 à 10:45 | ![]() | 5 120 × 2 880 (784 octet) | Cmglee | Rotate, and reduce height to better show hole. |
28 mars 2018 à 21:37 | ![]() | 5 120 × 2 880 (784 octet) | Cmglee | User created page with UploadWizard |
Utilisation du fichier
La page suivante utilise ce fichier :
Usage global du fichier
Les autres wikis suivants utilisent ce fichier :
- Utilisation sur en.wikipedia.org
- Utilisation sur www.wikidata.org
- Utilisation sur zh.wikipedia.org
Ce document provient de « https://fr.wikipedia.org/wiki/Fichier:Csaszar_polyhedron.stl ».