МОДЕЛИРОВАНИЕ РЕГУЛЯРНЫХ МАТЕМАТИЧЕСКИХ СТРУКТУР В СРЕДЕ OPENSCAD - Студенческий научный форум

X Международная студенческая научная конференция Студенческий научный форум - 2018

МОДЕЛИРОВАНИЕ РЕГУЛЯРНЫХ МАТЕМАТИЧЕСКИХ СТРУКТУР В СРЕДЕ OPENSCAD

Кузнецова М.В. 1
1Тобольский педагогический институт им. Д.И. Менделеева (филиал) ТюмГУ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Регулярной называется структура, построенная из однотипных и одинаково соединенных элементов, узлов, частей. Чем больше регулярность структуры, тем экономичнее процесс ее производства, большая надежность и во многих случаях быстродействие.Большинство из них подчиняются определённой математической закономерности. Данные структуры встречаются повсеместно в природе, архитектуре, техники и во многих других областях.

Поскольку регулярные структуры представляют собой повторяющиеся объекты, появление которых подчиняется определенной математической закономерности, то в информатике и языках программирования для их реализации используются циклические структуры. Циклическими называются структуры, в которых предусмотрена возможность многократного повторения выполнения участка алгоритма. Этот участок называется телом цикла. Циклические структуры, в которых число повторений цикла заранее известно или может быть определено до начала цикла, называются регулярными циклическими структурами[1].

В блоке организации цикла используется специальная переменная, которая предназначена для определения условия остановки цикла – i. Эта переменная называется параметром цикла. Операторы, следующие за заголовком цикла, составляют тело цикла (рис. 1).

Циклическая структура, в которой число повторений цикла заранее неизвестно, а определяется только в процессе выполнения алгоритма, называется итеративной циклической структурой. В зависимости от места расположения условия продолжения цикла (или выхода из цикла) итеративные циклические алгоритмы подразделяются на два вида: с предусловием, с постусловием (рис. 1).

Рис. 1

В программе OpenSCAD, как и в других CADах, используются только циклы типа «Для» (с параметром). В зависимости от особенностей решаемой задачи выделяется несколько видов синтаксиса оператора FOR [2]

  1. Если изменение параметра выполняется в пределах диапазона

for (i = [start : end]) {

действие 1;

действие 2;

}

Параметры:

i – счетчик цикла (изменяемый параметр цикла). Обычно изменение тел выполняется относительно осей X, Y, Z, которые и выступают в роли изменяемых параметров. Параметры могут изменяться по отдельности или вместе (в этом случае они указываются через запятую).

  • start - начальное значение параметра (начало диапазона).

  • end - конечное значение параметра (конец диапазона).

Замечание:

Изменение счетчика в рамках указанного диапазона, выполняется с единичным шагом.

Пример (рис. 2):

$fn=200;

for (i=[1:9],j=[1:9]){

translate([i,j,0])

cube([0.5,1.5,j]); }

Рис. 2 Рис. 3

В данном случае в цикле используется две переменных i и j, изменяющееся в диапазоне [1:9] с шагом 1.

  1. Изменение параметра выполняется в пределах диапазона с шагом отличным от 1 [19]:

for (i = [start : step : end]) {

действие 1;

действие 2;

}

В данном случае добавился ещё один параметр step обозначающий шаг, с которым происходит изменение параметра цикла.

Пример 1 (рис. 3):

$fn=5;

for (i=[-10:2:10]){

translate ([i, 0, 0.1*i*i])

sphere (d=2, $fn=100);}

for (i=[-10:0.01:10]){

translate ([i, 0, 0.1*i*i])

sphere (d=0.5);}

В данном случае используется 2 цикла с разным шагом. Первый цикл - с большим шагом, размещает большие сферы по параболической траектории. Второй – с уменьшенным шагам так же размещает сферы только меньшего радиуса по той же траектории

Пример 2 (рис.4):

$fn=10;

for (i=[0:1:1080]){

rotate ([0,0,i])

translate ([i*0.01, i*0.01, -i*0.01+10])

sphere (d=2);}

Рис. 4 Рис. 5

Изменение параметра происходит путем приобретения им конкретных значений, заранее определенных в операторе [2]:

for (i = […, …, …]) {

действие 1;

действие 2;

}

Пример (рис. 39)

$fn=10;

for (i = [1:2:10], j = [3, 6, 9]){

translate ([i, j, 0])

cylinder (d=1, h=3);}

for (i = [2: 2: 8], j = [1.5, 4.5, 7.5, 10.5]){

translate ([i, j, 0])

cylinder (d=1, h=3);}

Помимо создания отдельных экземпляров для каждого повторения цикла, OpenSCAD позволяет получить объект, который представляет собой общую часть всех объектов, полученных в цикле. Эту операцию можно выполнить с помощью оператора intersection_for [3].

Синтаксис оператора такой же как у for:

intersection_for (i = [start: end]) { … };

intersection_for (i = [start : step : end]) { … };

intersection_for (i = […,…,…]) { … };

Рассмотрим разницу в работе операторов for ( ) и intersection_for ( ):

Пример (рис. 6, рис. 7):

$fn=10;

for (i = [[0, 0, 0], [20, 30, 200], [99, 45, 700], [90, 8, 60], [2, 40, 260]]){

rotate (i);

cube ([200, 30, 30], center=true);}

Рис. 6Рис. 7

$fn=10;

intersection_for (i=[[0, 0, 0], [20, 30, 200], [99, 45, 700], [90, 8, 60], [2, 40, 260]])

{ rotate (i)

cube ([200, 30, 30], center=true); }

Список литературы:

  1. Румянцев М.В. Виртуальная реконструкция объектов // Прикладная информатика: научно-практический журнал. – 2011. - №36. – 62 - 77 с.

  2. Ечмаева Г.А. Основы твердотельного моделирования в среде OpenSCAD: учебно-методическое пособие / Г.А. Ечмаева. –Тобольск: Тобольский педагогический институт им. Д.И. Менделеева (филиал) ТюмГУ в г.Тобольске, 2017.– 160 с.

  3. OpenSCAD User Manual/User-Defined Functions and Module.// Википедия [Электронный ресурс]: Режим доступа: - URL:https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/User-Defined_Functions_and_Modules (дата обращения 4.05.2017)

Просмотров работы: 141