Файл:Алмазная решетка.stl

Исходный файл (5120 × 2880 пикселей, размер файла: 181 КБ, тип MIME: application/sla )

Посмотреть Diamond grill.stl на viewstl.com

Краткое содержание

ОписаниеАлмазная решетка.stl
Русский: Модель алмазной решетки, включающей 2 x 2 x 2 элементарных ячеек, CMG Lee. Атомы представлены тетракискубооктаэдрами, а связи — треугольными антипризмами.
Дата
ИсточникСобственная работа
АвторCmglee
#!/usr/bin/env питонзаголовок  =  'Модель алмазной решетки, состоящей из 2 x 2 x 2 элементарных ячеек, автор CMG Lee.'import  re ,  struct ,  math def  fmt ( string ):  ## string.format(**vars()) с использованием тегов {expression!format} от 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 ( cells , Separater = '|' ): cellpadss = [ list ( rows ) + [ '' ] * ( len ( max ( cells , key = len )) - len ( rows )) для строк в ячейках ] fmts = [ ' %%%d s' % ( max ([ len ( str ( cell ))                                                для  ячейки  в  столбцах ]))  для  столбцов  в  zip ( * cellpadss )]  return  ' \n ' . join ([ Separater . join ( fmts )  %  tuple ( rows )  для  строк  в  cellpadss ]) def  hex_rgb ( colour ):  ## преобразовать [#]RGB в #RRGGBB и [#]RRGGBB в #RRGGBB  return  '# %s '  %  ( colour  if  len ( colour )  >  4  else  '' . join ([ c  *  2  for  c  in  colour ])) . lstrip ( '#' ) def  viscam_colour ( color ):  colour_hex  =  hex_rgb ( color )  colour_top5bits  =  [ int ( color_hex [ i : i + 2 ],  16 ) >>  3  for  i  in  range  ( 1,7,2 ) ] return ( 1 << 15 ) + ( color_top5bits [ 0 ] << 10 ) + ( color_top5bits [ 1 ] << 5 ) + color_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)) * multipledef rotate(facetss, deg_x, deg_y, deg_z): ## around x then y then z axes (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_rotatessdef translate(facetss, dx, dy, dz): 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 facetsfacet_stickss = [[None,0,0, -2,10,10, -40,40,48, -10, 2,10], [None,0,0, -10, 2,10, -48,40,40, -10,10, 2], [None,0,0, -10,10, 2, -40,48,40, -2,10,10]]facet_stickss += translate(rotate(translate(facet_stickss, 25,-25,-25), 90,-90,90), -25,25,25)facet_stickss += rotate(facet_stickss, 0, 0,180)facet_stickss += rotate(facet_stickss, 0,180, 0)facet_ball_triangless = [[None,0,0, 12,12,0, 0,12,12, 12,0,12]]facet_ball_triangless += rotate(facet_ball_triangless , 90, 0, 0)facet_ball_triangless += rotate(facet_ball_triangless , 180, 0, 0)facet_ball_triangless += rotate(facet_ball_triangless , 0,180, 0)facet_ball_diamondss = [[None,0,0, 17,0,0, 12,12,0, 12,0,12]]facet_ball_diamondss += rotate(facet_ball_diamondss , 180, 0, 0)facet_ball_diamondss += rotate(facet_ball_diamondss , 90, 0, 0)facet_ball_diamondss += rotate(facet_ball_diamondss , 0,180, 0)facet_ball_diamondss += rotate(facet_ball_diamondss , 0, 90, 0)facet_ball_diamondss += rotate(facet_ball_diamondss[:8], 0, 0,90)facet_ballss = facet_ball_diamondss + facet_ball_trianglessfacet_stick_ballss = facet_stickss + facet_ballssfacet_cell_1ss = (translate(facet_ballss,100,100,0) + translate(facet_stick_ballss, 50,50,50))facet_cell_1ss += translate(facet_cell_1ss, 100,100,0)facet_cell_2ss = (translate(facet_ballss,200,100,100) + translate(facet_stick_ballss, 150,50,150))facet_cell_2ss += translate(facet_cell_2ss, -100,100,0)facet_cellss = facet_cell_1ss + facet_cell_2ssfacetss = facet_cellssfacetss += translate(facetss, 200, 0, 0)facetss += translate(facetss, 0,200, 0)facetss += translate(facetss, 0, 0,200)facetss += (facet_ballss + translate(facet_ballss, 0,200, 0) + translate(facet_ballss, 0,100,100) + translate(facet_ballss, 0,300,100) + translate(facet_ballss, 0, 0,200) + translate(facet_ballss, 0,200,200) + translate(facet_ballss, 0,400,200) + translate(facet_ballss, 0,100,300) + translate(facet_ballss, 0,300,300) + translate(facet_ballss, 0,200,400) + translate(facet_ballss, 0,400,400) + translate(facet_ballss, 200, 0, 0) + translate(facet_ballss, 100, 0,100) + translate(facet_ballss, 300, 0,100) + translate(facet_ballss, 0, 0,200) + translate(facet_ballss, 200, 0,200) + translate(facet_ballss, 400, 0,200) + translate(facet_ballss, 100, 0,300) + translate(facet_ballss, 300, 0,300) + translate(facet_ballss, 200, 0,400) + translate(facet_ballss, 400, 0,400) + translate(facet_ballss, 100,100,400) + translate(facet_ballss, 100,300,400) + translate(facet_ballss, 200,200,400) + translate(facet_ballss, 300,100,400) + translate(facet_ballss, 400,200,400) + translate(facet_ballss, 300,300,400) + translate(facet_ballss, 200,400,400) )## Calculate normalsfor 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([['%s%d' % (xyz, n) for n in range(3) for xyz in list('XYZ')] + # ['N%s' % (xyz) for xyz in list('xyz')] + ['s0f']] + facetss)) ## Компиляция STL outss  =  ([[ 'STL \n\n %-73s \n\n '  %  ​​( header [: 73 ]),  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  =  '' . join ([ out  for  outs  in  outss  for  out  in  outs ]) print ( '# bytes: %d \t # facets: %d \t title: %s '  %  ( len ( out ),  len ( facetss ),  header [: 73 ])) with  open ( __file__ [: __file__ . rfind ( '.' )]  +  '.stl' ,  'wb' )  as  f_out :  f_out . write ( out )  # f_out. write('%s\n## Скрипт Python для генерации STL\n%s\n' % (''.join(outs), open(__file__).read()))

Лицензирование

Я, владелец авторских прав на данную работу, настоящим публикую ее на условиях следующей лицензии:
w:ru:Creative Commons
атрибуция доля одинаково
Этот файл лицензирован в соответствии с лицензией Creative Commons Attribution-Share Alike 4.0 International.
Вы свободны:
  • делиться – копировать, распространять и передавать работу
  • ремиксовать – адаптировать произведение
При следующих условиях:
  • атрибуция – Вы должны указать соответствующее авторство, предоставить ссылку на лицензию и указать, были ли внесены изменения. Вы можете сделать это любым разумным способом, но не таким образом, который подразумевает, что лицензиар одобряет вас или ваше использование.
  • распространяйте на равных условиях – если вы делаете ремиксы, преобразуете или дополняете материал, вы должны распространять свои вклады по той же или совместимой лицензии, что и оригинал.
https://creativecommons.org/licenses/by-sa/4.0CC BY-SA 4.0Creative Commons Attribution-Share Alike 4.0истинныйистинный
Фонд Викимедиа
Загрузчик этого файла согласился с лицензией Wikimedia Foundation на 3D-патент: Этот файл и любые 3D-объекты, изображенные в файле, являются моей собственной работой. Настоящим я предоставляю каждому пользователю, производителю или дистрибьютору объекта, изображенного в файле, всемирную, безвозмездную, полностью оплаченную, неисключительную, безотзывную и бессрочную лицензию без дополнительных затрат по любому патенту или патентной заявке, которой я владею сейчас или в будущем, на создание, создание, использование, предложение для продажи, продажу, импорт и распространение этого файла и любых 3D-объектов, изображенных в файле, которые в противном случае нарушали бы любые притязания на любые патенты, которыми я владею сейчас или в будущем.

Обратите внимание, что в случае каких-либо различий в значении или толковании между оригинальной английской версией данной лицензии и переводом, преимущественную силу имеет оригинальная английская версия.

Подписи

Добавьте однострочное объяснение того, что представляет собой этот файл.

Элементы, изображенные в этом файле

изображает

создатель

некоторая ценность

Имя автора строка : Cmglee
Имя пользователя Wikimedia : Cmglee
URL-адрес : http://commons.wikimedia.org/wiki/User:Cmglee

статус авторских прав

защищенный авторским правом

лицензия на авторское право

Creative Commons Attribution-ShareAlike 4.0 International

зарождение

18 марта 2018 г.

источник файла

оригинальное создание загрузчика

История файла

Нажмите на дату/время, чтобы просмотреть файл в том виде, в котором он был в тот момент.

Дата/ВремяМиниатюраРазмерыПользовательКомментарий
текущий00:14, 19 марта 2018 г.5,120 × 2,880 (181 КБ)CmgleeПользователь создал страницу с помощью UploadWizard

Глобальное использование файлов

Этот файл используют и другие вики:

  • Использование на as.wikipedia.org
    • সাঁচ:Infobox минерал
    • সাঁচ:Infobox Mineral/doc
  • Использование на bh.wikipedia.org
    • टेम्पलेट:Infobox минерал
    • टेम्पलेट:Infobox Mineral/doc
  • Использование на cs.wikipedia.org
    • Кристалловая мржижка
  • Использование на fa.wikipedia.org
    • Сахтар Амас
    • مواص مواد الماس
    • Исполнитель: Арман Газемпур/صفحه تمرین
  • Использование на fi.wikipedia.org
    • Бравэйс'н хила
  • Использование на it.wikipedia.org
    • Ретиколо кубико а лицевой концентрат
  • Использование на om.wikipedia.org
    • Шаблон:Infobox mineral/doc
  • Использование на www.wikidata.org
    • Q905169
  • Использование на zh.wikipedia.org
    • 布拉菲晶格
Retrieved from "https://en.wikipedia.org/wiki/File:Diamond_lattice.stl"