Datei:Sphericon.stl
Erscheinungsbild
aus Wikipedia, der freien Enzyklopädie
Sphericon.stl (Dateigröße: 31 KB, MIME-Typ: application/sla)
Warnung!
Diese Art von Datei kann schädlichen Programmcode enthalten. Durch das Herunterladen oder Öffnen dieser Datei kann der Computer beschädigt werden. Bereits das Anklicken des Links kann dazu führen, dass der Browser die Datei öffnet und unbekannter Programmcode zur Ausführung kommt.
Die Betreiber der Wikipedia übernehmen keine Verantwortung für den Inhalt dieser Datei! Sollte diese Datei tatsächlich schädlichen Programmcode enthalten, sollte ein Administrator informiert werden.
View Sphericon.stl on viewstl.com
Beschreibung
| BeschreibungSphericon.stl |
English: An ASCII STL of a sphericon by CMG Lee. |
| Datum | |
| Quelle | Eigenes Werk |
| Urheber | 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()))
Lizenz
Ich, der Urheber dieses Werkes, veröffentliche es unter der folgenden Lizenz:
Diese Datei ist lizenziert unter der Creative-Commons-Lizenz „Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 international“.
- Dieses Werk darf von dir
- verbreitet werden – vervielfältigt, verbreitet und öffentlich zugänglich gemacht werden
- neu zusammengestellt werden – abgewandelt und bearbeitet werden
- Zu den folgenden Bedingungen:
- Namensnennung – Du musst angemessene Urheber- und Rechteangaben machen, einen Link zur Lizenz beifügen und angeben, ob Änderungen vorgenommen wurden. Diese Angaben dürfen in jeder angemessenen Art und Weise gemacht werden, allerdings nicht so, dass der Eindruck entsteht, der Lizenzgeber unterstütze gerade dich oder deine Nutzung besonders.
- Weitergabe unter gleichen Bedingungen – Wenn du das Material wiedermischst, transformierst oder darauf aufbaust, musst du deine Beiträge unter der gleichen oder einer kompatiblen Lizenz wie das Original verbreiten.
| Der Uploader dieser Datei hat der 3D-Patentlizenz der Wikimedia Foundation zugestimmt: Diese Datei sowie alle in der Datei abgebildeten 3D-Objekte sind meine eigenen Arbeiten. Ich gewähre hiermit jedem Benutzer, Hersteller oder Vertreiber des in der Datei dargestellten Objekts eine weltweite, gebührenfreie, vollständig bezahlte, nicht ausschließliche, unwiderrufliche und unbefristete Lizenz ohne zusätzliche Kosten gemäß einem Patent oder einer Patentanmeldung, die ich derzeit besitze oder in Zukunft besitzen werde, diese Datei und alle in der Datei dargestellten Objekte, die ansonsten Patentansprüche von Patenten, die ich derzeit besitze oder in Zukunft besitzen werde, verletzen würden, herzustellen, herstellen zu lassen, zu gebrauchen, zum Verkauf anzubieten, zu verkaufen, zu importieren und zu vertreiben. Beachte bitte, dass im Fall von unterschiedlichen Bedeutungen oder Auslegungen bei der englischen Originalfassung und einer Übersetzung vorrangig die englische Originalfassung gilt. |
Kurzbeschreibungen
Ergänze eine einzeilige Erklärung, was diese Datei darstellt.
An ASCII STL of a sphericon
In dieser Datei abgebildete Objekte
Motiv
Einige Werte ohne einen Wikidata-Eintrag
16. März 2018
32.166 Byte
application/sla
7cb79e3e259ffc55835fcbf2a2d0e08cfd5ec163
Dateiversionen
Klicke auf einen Zeitpunkt, um diese Version zu laden.
| Version vom | Maße | Benutzer | Kommentar | |
|---|---|---|---|---|
| aktuell | 01:47, 16. Mär. 2018 | (31 KB) | wikimediacommons>Cmglee | User created page with UploadWizard |
Dateiverwendung
Keine Seite verwendet diese Datei.