ملف:Sphericon.stl
من testwiki
اذهب إلى التنقل
اذهب إلى البحث
Sphericon.stl (حجم الملف: ٣١ كيلوبايت، نوع MIME: application/sla)
تحذير: قد يحتوي نوع هذا الملف على كود خبيث.
يمكن عند تشغيله السيطرة على نظامك.
هذا الملف من ويكيميديا كومنز ويمكن استخدامه بواسطة المشاريع الأخرى. الوصف على صفحة وصف الملف هناك معروض بالأسفل.
View Sphericon.stl on viewstl.com
ملخص
| الوصفSphericon.stl |
English: An ASCII STL of a sphericon by CMG Lee. |
| التاريخ | |
| المصدر | عمل شخصي |
| المؤلف | 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()))
ترخيص
أنا، صاحب حقوق التأليف والنشر لهذا العمل، أنشر هذا العمل تحت الرخصة التالية:
هذا الملفُّ مُرخَّصٌ برخصة المشاع الإبداعي الدَّوليَّة المُلزِمة بنسب العمل إلى مُؤَلِّفه وبترخيص المُشتقَّات بالمثل 4.0.
- يحقُّ لك:
- مشاركة العمل – نسخ العمل وتوزيعه وبثُّه
- إعادة إنتاج العمل – تعديل العمل
- حسب الشروط التالية:
- نسب العمل إلى مُؤَلِّفه – يلزم نسب العمل إلى مُؤَلِّفه بشكل مناسب وتوفير رابط للرخصة وتحديد ما إذا أجريت تغييرات. بالإمكان القيام بذلك بأية طريقة معقولة، ولكن ليس بأية طريقة تشير إلى أن المرخِّص يوافقك على الاستعمال.
- الإلزام بترخيص المُشتقات بالمثل – إذا أعدت إنتاج المواد أو غيرت فيها، فيلزم أن تنشر مساهماتك المُشتقَّة عن الأصل تحت ترخيص الأصل نفسه أو تحت ترخيص مُتوافِقٍ معه.
| وافق رافع هذا الملفِّ على رخصة مؤسسة ويكيميديا الخاصة ببراءة اختراع الرسوم ثلاثية الأبعاد. هذا الملفُّ وأية أغراضٍ ثلاثية الأبعاد مبينة فيه هي كُلُّها عملي الخاص. وأمنح بموجبه لكل مستخدم أو صانع أو موزع للغرض المبين في الملف رخصة عالمية لا تستلزم دفع عوائد ومدفوعة مسبقاً بالكامل وغير حصرية ولا يمكن التراجع عنها ولا نهائية من غير تكلفة بموجب أي براءة اختراع قائمة أو طلب براءة اختراع أملكه في الوقت الحالي أو لاحقاً بغرض صنع أو تصنيع أو استخدام أو عرض بيع أو بيع أو استيراد أو توزيع هذا الملف وأية أغراض ثلاثية الأبعاد مبينة فيه، والتي قد تخالف أية مطالبات في أية براءات اختراع أملكها في الوقت الحالي أو في المستقبل. في حالة حصول خلاف في المعنى أو التفسير بين النسخة الإنجليزية الأصل لهذه الرخصة وإحدى ترجماتها، ستكون الأولوية للنسخة الإنجليزية. |
الشروحات
أضف شرحاً من سطر واحد لما يُمثِّله هذا الملف
An ASCII STL of a sphericon
العناصر المصورة في هذا الملف
يُصوِّر
قيمة ما بدون عنصر ويكي بيانات
١٦ مارس 2018
تاريخ الملف
اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.
| زمن/تاريخ | الأبعاد | مستخدم | تعليق | |
|---|---|---|---|---|
| حالي | ٠٢:٤٧، ١٦ مارس ٢٠١٨ | (٣١ كيلوبايت) | wikimediacommons>Cmglee | User created page with UploadWizard |
استخدام الملف
الصفحة التالية تستخدم هذا الملف: