Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

grasshopper_manual_rus

.pdf
Скачиваний:
249
Добавлен:
12.05.2015
Размер:
5.66 Mб
Скачать

Создадим определения подобранные случайным образом:

Params/Special/Numeric Slider - перетащим ползунок числовых значений на холсте.

Двойной щелчок по слайдеру вызовет настройки:

-нижний предел: 0,0

-верхний предел: 100,0

-значение: 50,0 (Примечание: эта величина произвольная и может быть изменена на любое значение в границах верхнего и нижнего пределов)

Выберите тип слайдера и Ctrl + C (копировать) и Ctrl + V (вставить), чтобы создать дубликат слайдер

Params/Primitive/Integer - перетащить два

целочисленных компонентов на холст

Подключить 1 ползунок на первый компонент Integer

Подключить слайдер от 2 ко второму компоненту Integer

Слайдер по умолчанию имеет значение с плавающей точкой (в результате чего мы имеем десятичные числовые

значения). Подсоединив слайдер к компоненту Integer, мы

можем округлить значение с плавающей точкой, или любое целое число. Когда мы подключим Post-It панель (Params/Special/Panel) к выводимому значению каждого компонента Integer, мы увидим преобразования в режиме реального времени. Переместите ползунок слева и справа и значения плавающей точки будут округлены в целое число. Конечно, мы могли бы упростить этот шаг просто установив тип слайдера до целых чисел.

Scalar/Operators/Add – перетащить-добавить компонент на холст

Подключение первого Integer компонента к Add A

Подключение второго Integer компонента к Add B

Params/Special/Panel – перетащить панель Post-it на холст

Подключаем Add-R к выходу Post-it, и видим суммирование значений двух чисел на Post-it панели.

• Перетаскивание остальные скалярные операторы на поле:

-Вычитание

-Умножение

-Деление

-Модуль

-Степень

Подключим первого компонента Integer к каждому из Operator's-А входных значений.

Подключим второго компонента Integer к каждому из Operator's-B входных значений.

Перетащим еще пять Post-it панелей на холсте и подключим по одной панели к выходящим значениям каждого оператора.

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

Условные

Вы, наверное, заметили, что существует несколько

операторы

компонентов, в подкатегории Operator вкладки Scalar,

 

которые мы не рассмотрели в последнем разделе.

 

Существуют 4 компонента (новые версии 0.6.0007),

 

которые действуют несколько иначе, чем математические

 

операторы, для того что бы продемонстрировать это,

 

сравним два списка данных вместо выполнения

 

алгебраических выражений. Четыре компонента Equality,

 

Similarity, Larger Than, and Smaller Than (равенство,

 

сходство, превышение и меньше чем) объясняются более

 

подробно ниже.

 

 

Диапазоны, серии

и интервалы

А) Equality(равенство) имеет два компонента списка и сопоставляет первый пункт списка A с первым пунктом cписка В. Если эти два значения совпадают, то True (верно) создается булево значение, и наоборот, если два значения не равны, то False создается логическое значение. Компоненты цикла в списках в соответствуют

заданным данными алгоритма сопоставления (по

умолчанию установленных в Longest List). Есть два выхода для этого компонент. Первый возвращает список булевых значений показывая, какие значения в списке были равны друг другу. Второй выход возвращает список показывая, какие значения не равны друг другу - или список обратный первому.

Б) Similarity (сходство) оценивает два компонента списка данных и проверяет сходство между двумя числами. Это почти идентично тому, как компонент Equality сравнивает два cписка, за одним исключением ... тем, что имеет процент ввода, который определяет отношение списка А и списка В, список имеет право отступать перед предполагается неравенство. Similarity компонент также имеет выводимые параметры, которые определяют абсолютное значение расстояния между двумя входными списки.

C) Larger than (больше чем) компонент берет два списки

данных и сопоставляет первый пункт списка А и первый

пункт из списка B. Двумя выходами позволяет вам дать оценку двух списков в соответствии с критериями "больше" (>) или больше и равно (> =) состоянии.

D) Smaller than (меньше чем) компонент выполняет противоположное действие компоненту Larger Than.

Компонент Smaller than определяет, будет ли список А

меньше списка В и возвращает список булевых значений. Кроме того, два выхода позволяют вам оценить каждый список в соответствии со следующими критериями - меньше чем (<) или меньше или равно (<=).

Диапазоны, серии и интервалы – компоненты, создающие множества значений между двумя числовыми пределами, однако каждый компонент работает по-разному.

Range

Компонент Range (диапазон) создает список значений

равноудаленных друг от друга между нижним и верхним

 

 

пределами. В приведенном выше примере, два числовых

 

ползунка подключены к входу значений компонента

 

Range. Первый слайдер определяет числовой домен для

 

диапазона значений. В данном примере домен был

 

определен от нуля до одного, так как регулятор

 

установлен в положение 1. Второй ползунок определяет

 

ряд шагов по разделению домена, который в данном

 

случае был установлен на 10. Таким образом, на выходе

 

получаем список из 11 номеров равноудаленных на 1.

 

(Примечание: второй слайдер, установлен на 10, что

 

определяет количество делений между 0 и 1, который в

 

конечном счете создает 11 чисел, а не 10)

 

 

Series

Компонент Series

создает

набор дискретных

чисел,

 

базирующихся на

начальное

значение, размере

шага

и количестве значений в серии. Пример серии демонстрирует три числовых слайдера связанных с компонентом Series. Первый ползунок, подключенный к Series-S на входе, определяет отправную точку для ряда чисел. Второй слайдер, установленный на 10, определяет

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

установлено на 1 и размер шага был установлен на 10, следующее значение в серии будет 11. И наконец, третий ползунок определяет количество значений в серии. Поскольку это значение было также установлено на 10, финальные значения определяются серией из 10 номеров, начиная с 1 и шагом 10.

Рандомные (случайные) данные

Компонент Interval создает целый ряд всевозможных чисел между нижним и верхним номерами. Компонент Interval похож на числовой домен, который мы определили для компонент Range. Основное различие заключается в том, что компонент Range создает диапазон по умолчанию числового домена между 0 и введеным значением. В компоненте Interval, низшее и высшее значения определяют вводимые параметры А и В. В приведенном выше примере, мы определили диапазон всех возможных значений между 10 и 20, установленных двумя числовыми ползунками. Выходное значение для компонента Interval показывает значения от 10,0 до 20,0

которые отражают наш новый числовой домен. Если

теперь соединить Interval-I выхода с Range-D, мы можем создать ряд чисел в интервале значений. Как и в предыдущем примере с компонентом Range, мы устанавливаем число шагов 10, и видим 11 значений равномерно распределенным по интервалу от нижнего значения 10,0 до верхнего 20,0. (Примечание: Есть

несколько способов, чтобы определить интервал, и вы

можете увидеть некоторые другие методы, перечисленные во вкладке Scalar/Interval. Мы лишь определили простой компонент Interval, о некоторых других интервальных методов будет рассказано в следующих главах)

Итак, к примеру, мы решили сделать хаотически

распределенное множество точек для какой-нибудь дальнейшего работы. Все, что нам для этого нужно - набор случайных чисел Random (расположенный во вкладке Logic), а также будем использовать компонент

Point XYZ и компонент Jitter (дрож).

Компонент Random производит 10 случайных чисел, количество которых контролируются Numeric slider, а затем этот список перемешиваются компонентом Jitter (Logic/Sets/Jitter) по Y координате в первом пункте, и по Z координат во втором, иначе получилась бы просто структура внутри вашей сетки. Все точки распределены в

пространстве между 0 и 1 для каждого направления.

Чтобы изменить ареал точек мы должны изменить численный домен компонента Random. Это можно сделать вручную, установив «область случайных чисел» в окне Rhino или при помощи числового слайдера.

Настройка домена значений компонента Random, Interval (Scalar/Interval/Interval), чтобы увеличить ареал точек.

Подключим Numeric slider к входу-R компонента Random,

он просто регулирует верхний интервал области (с

нижним интервалом равным 0).

Последовательность А что если сделать сетку точек равномерно Фибоначчи расположенных с увеличением значения? Давайте посмотрим на доступные компоненты. Нам необходима

серия номеров, которые быстро увеличивают свое значение, для чего нам понадобится компонент Fibonacci (Logic/Sets/Fibonacci).

Числовой ряд Фибоначчи – последовательность с двумя

первыми определенные значениями (например, 0 и 1), а

следующий номер представляет собой сумму двух предыдущих чисел.

N (0) = 0, N (1) = 1, N (2) = 1, N (3) = 2, N (4) = 3, N (5) = 5, ..., N (I) = N (I-2) + N (I-1)

Вот некоторые из номеров этой серии: 0, 1, 1, 2, 3, 5, 8,

13, 21, 34, 55, 89, ...

Как можно заметить, числовая последовательность быстро растет. Здесь мы используем серию Fibonacci (Logic/ Component /Fibonacci) для получения постепенно увеличивающихся последовательности и соединяем ее с компонентом Point XYZ (cross reference).

Функции и булевы операции

Почти каждый язык программирования имеет метод для оценки условных положений. В большинстве случаев программист создает кусок кода, чтобы задать простой Вопрос "что если?" Что делать, если 9 / 11

террористических нападений никогда не случалось? Что

делать, если цена на газ $ 10/gallon? Это важные вопросы, которые представляют собой более высокий уровень абстрактного мышления. Компьютерные программы также имеют возможность анализировать вопрос "что если?" и принимать меры в зависимости от ответа на этот вопрос. Давайте взглянем на очень простые условные заявления о том, что программа может интерпретировать:

Если объект представляет собой кривую, удалите его.

В начале часть кода «смотрит» на объект и определяет одно из значение для булевых операций, представляет ли объект собой кривую. Среднего значения не предусмотрено. Булево значение True (верно), если объект представляет собой кривую, или False (ложно), если объект не является кривой. Вторая часть заявления выполняет действия в зависимости от результата условного заявление, в данном случае, если объект представляет собой кривую, то он будет удален. Это условный оператор называется If / Else. Если объект соответствует определенным критериям, делать что-то, если нет, то сделать что-то другое. Кузнечик имеет такую же способность к анализу условных операторов с помощью компонентов Function F(x).

В приведенном выше примере, мы подключили числовой слайдер к X-входу одной переменной составляющей функцию (Logic/Script/F1). Кроме того, условный оператор был подключен к F-входу функции, определяющий вопрос: "X больше 5?«, Если числовой слайдер установлен выше 5, то r-выход для функции

показывает логическое значение True. Если числовой

слайдер ниже 5, то r-вывод изменится на значение False. После того как мы определили булево значение функции, можно вставить True/False шаблон информации в компонент Dispatch (Logic/List/Dispatch) для выполнения определенных действий.

Компонент Dispatch работ путем обработки перечня информации (в нашем примере мы подключаем числовой слайдер информации к входу Dispatch-L) и фильтрации данных основанных на результате булевой операции одной переменной функцией. Если модель показывает значение True, список информации будут передан в Dispatch-А выход. Если модель показывает значение False, список информацию передается в Dispatch-B вывода. Например, мы решили создать круг ТОЛЬКО если значение больше 5. Мы соединяем компонент Circle (Curve/Primitive/Circle) c выходом Dispatch-А, так что круг с указанным радиусом на числовом слайдере будет создана только тогда, когда булево значение, передаст в компонент сообщение True. Поскольку ни один компонент не был подсоединен к Dispatch-B выходу, то логическое значение False не к чему не приведет, и круг не будет создан.

В дальнейшем мы сможем определить эту разницу,

присоединив N-Sided Polygon (Curve/Primitive/Polygon) r

выходу Dispatch-B, убедившись, что подключение осуществлено к входу Polygon-R, для задания радиуса полигона. Теперь, если числовой слайдер имеет значение ниже 5, то пятисторонний многоугольник с радиусом

который определяется значением слайдера будет создано

в начальной точке. Если мы возьмем слайдер, значение которого превышает 5, то будет создан круг. По этому методу, можно начинать создавать сколько угодно If / Else положений по мере необходимости добавлять информацию на всем протяжении нашего определения.

Функции и

Компонент Function (функция) является очень разносторонними,

номерные данные

так как они могут быть использованы в различных вариантах

 

приложений. Мы уже обсуждали, как можно использовать

 

компонент Function для оценки условных положений и

 

выполнения булевых операций для выводимых данных. Тем не

 

менее, мы также можем использовать компоненты Function для

 

решения сложных математических алгоритмов и отображения

 

числовых данных в выводимых значениях.

 

 

Создание определения с нуля:

Logic/Sets/Range – выберем в перетащим компонент Range на рабочее поле

Params/Special/Slider - выберем в перетащим числовой

слайдер на рабочее поле

щелкнув правой кнопкой мыши по слайдеру введем следующие данные:

o Name(название): Crv Length

o Slider Type(тип слайдера): Floating Point (по умолчанию) o Lower Limit(нижний предел): 0.1

o Upper Limit(верхний предел): 10.0 o Value(значение): 2.5

Далее щелкнув правой кнопкой мыши по второму слайдеру введем следующие данные :

o Name: Num Pts on Crv o Slider Type: Integers o Lower Limit: 1.0

o Upper Limit: 100.0 o Value: 100.0

Соединим Crv Length слайдер с входными данными

Range-D

Соединим Num Pts on Crv с входными данными Range-N

Нами был создан диапазон данных содержащий 101 значение, который расположен в пределах от 0 до 2,5, который может быть подключен к компоненту Function.

Logic/Script/F1 - выберем в перетащим на рабочее поле компонент Function

щелчком правой кнопки мыши по F-input компонента

Function откроем Expression Editor(редактор значений).

в окне Expression Editor введем следующее значение: o x*sin(5*x)

Если введенный алгоритм не содержит ошибок, вы увидите сообщение "No syntax errors detected in expression« (т.е. выражение не содержит ошибок). o щелчком ОК подтверждаем алгоритм.

• выделяем компонент Function и нажимаем Ctrl+C (скопировать), Ctrl+V (вставить) для создания дубликата

Function

щелчком правой кнопки мыши по F-input компонента второй Function откроем Expression Editor(редактор значений).

в Expression Editor (редактор значений) вводим следующее выражение:

o x*cos(5*x)

Примечание: единственное отличие от предыдущей это то

что функция cos.

o жмем ОК для подтверждения

• Соединяем выход Range-R со входом x обеих компонентом Function

Итак мы получили 101 значение созданное компонентом Range в компоненте Function, который решает математические алгоритмы и выводит список новых числовых данных. При наведении указателя мыши на R выходе каждой функции, мы видим результат каждого уравнения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]