Моделирование регулярных математических структур в среде 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.