Моделирование регулярных математических структур в среде OpenSCAD
Классификация итеративных циклических алгоритмов в зависимости от места расположения условия продолжения цикла (или выхода из цикла). Изменение счетчика в рамках указанного диапазона. Создание отдельных экземпляров для каждого повторения цикла в OpenSCAD.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 27.02.2019 |
Размер файла | 727,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Тобольский педагогический институт им. Д.И. Менделеева
Моделирование регулярных математических структур в среде OpenSCAD
Кузнецова Марина Владимировна
Регулярной называется структура, построенная из однотипных и одинаково соединенных элементов, узлов, частей. Чем больше регулярность структуры, тем экономичнее процесс ее производства, большая надежность и во многих случаях быстродействие. Большинство из них подчиняются определённой математической закономерности. Данные структуры встречаются повсеместно в природе, архитектуре, техники и во многих других областях.
Поскольку регулярные структуры представляют собой повторяющиеся объекты, появление которых подчиняется определенной математической закономерности, то в информатике и языках программирования для их реализации используются циклические структуры. Циклическими называются структуры, в которых предусмотрена возможность многократного повторения выполнения участка алгоритма. Этот участок называется телом цикла. Циклические структуры, в которых число повторений цикла заранее известно или может быть определено до начала цикла, называются регулярными циклическими структурами [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]); }
В данном случае в цикле используется две переменных i и j, изменяющееся в диапазоне [1:9] с шагом 1.
2. Изменение параметра выполняется в пределах диапазона с шагом отличным от 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);}
Изменение параметра происходит путем приобретения им конкретных значений, заранее определенных в операторе [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);}
$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/UserDefined_Functions_and_Modules (дата обращения 4.05.2017)
Размещено на Allbest.ru
Подобные документы
Описание особенностей программирования циклических алгоритмов на С/С++. Использование операторов цикла для организации повтора в программе определенных действий. Создание и реализация программы приближенного вычисления интеграла методом трапеций.
лабораторная работа [86,3 K], добавлен 25.03.2019Изучение циклических операторов: оператора цикла, управляемого счетчиком, оператора цикла с предусловием и постусловием. Минимизированные функции, текст программы. Алгоритм работы приложения по нахождению функции с помощью операторов break и continue.
лабораторная работа [474,2 K], добавлен 23.11.2014Основные типы циклов программирования. Методы применения специальных функций break, continue и цикла while. Обработка массивов информации. Условия применения циклических алгоритмов на языке программирования С++. Инициализация одномерного массива.
курсовая работа [1,7 M], добавлен 06.01.2014Операторы цикла, присутствующие в языках программирования. Простой арифметический оператор цикла Паскаля, управление циклом с помощью переменной порядкового типа. Арифметический оператор цикла Паскаля с произвольным шагом, оператор цикла с предусловием.
реферат [59,5 K], добавлен 01.04.2010Требования к технологии проектирования программного обеспечения (ПО). Состав и описание стадий полного жизненного цикла ПО. Классификация моделей жизненного цикла ПО, их особенности. Методологии разработки ПО, приёмы экстремальный программирование.
презентация [874,4 K], добавлен 19.09.2016Алфавит языка программирования C#. Лексемы языка программирования. Область действия переменных. Понятие классов и объектов. Структура программного модуля на С#. Управление процессом повторения вычислений. Продолжение цикла и модификация параметра цикла.
курсовая работа [557,1 K], добавлен 10.03.2014Предназначение цикла for - оформление циклов (набора действий) с заданным количеством повторений. Пример программы, выводящей на экран все целые числа от 0 до 99. Решение задачи с помощью двух алгоритмов, используя известные функции ввода-вывода.
лабораторная работа [35,1 K], добавлен 15.07.2009Обзор рекурсивных алгоритмов с позиции теории алгоритмов, теории сложности, с точки зрения практического программирования. Имитация работы цикла с помощью рекурсии. Способы изображения древовидных структур. Синтаксический анализ арифметических выражений.
курсовая работа [432,2 K], добавлен 16.01.2013Построение ветвящихся процессов на примере табулирования функции на заданном промежутке. Построение блок-схемы, применение операторов цикла и условного перехода, математических функций и констант. Создание алгоритма и листинг программы на языке Pascal.
лабораторная работа [154,1 K], добавлен 07.02.2012Основные методологии проектирования, модели жизненного цикла локальных систем, сущность структурного подхода. Моделирование потоков процессов и программные средства поддержки их жизненного цикла. Характеристика и технология внедрения CASE средств.
курсовая работа [686,9 K], добавлен 13.12.2010