1.3.3. Математика, Выражения и Условия
Файлы упражнения, которые сопровождают этот раздел: Download
Знание как работать с числовыми данными - необходимый навык при изучении использования Grasshopper. Grasshopper содержит много компонентов для выполнения математических операций, определения условий и управления числовыми множествами.
В математике, числа организуются в множества и с двумя из них вы, возможно, знакомы:
Целые числа: […, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, …]
Числа с плавающей точкой: [8, …, -4.8, -3.6, -2.4, -1.2, 0.0, 1.234, e, 3.0, 4.0, …, 8]
Несмотря на то, что существуют и другие типы числовых множеств, эти два интересует нас больше всего, потому что они активно используются в Grasshopper. Хотя существуют и ограничения в точном представлении этих множеств в цифровой среде, мы можем аппроксимировать их с высокой степенью точности. В дополнение, следует понимать, что различие между Целыми числами и Числами с плавающей точкой соответствует различию между дискретными и непрерывными диапазонами. В этой главе, мы собираемся исследовать различные методы работы и определения различных числовых множеств.
1.3.3.1. ВКЛАДКА MATHS
Большинство компонентов, работающих с математическими операциями и функциями, располагаются во вкладке Math:
- Диапазоны используются для определения диапазонов значений (ранее назывались интервалами) между двумя числами. Компоненты в свитке Domain позволяют вам создавать или разрушать различные типы диапазонов.
- В математике, матрица - это массив чисел, организованных в ряды и колонки. Этот свиток содержит набор инструментов для создания и изменения матриц.
- Operators (Операторы) используются для выполнения математических операций, таких как Сложение, Вычитание, Умножение и т.д. Условные операторы позволяют вам определить, является ли числовое множество больше чем, меньше чем или равным другому числовому множеству.
- Polynomials (Многочлены) - одна из самых важных идей в алгебре и во всей математике и науке. Вы можете использовать компоненты из этого свитка для вычисления факториалов, логарифмов или для возведения числа в n-ую степень.
- Свиток Script содержит одно- и многозначные выражения, а также компоненты скриптов VB.NET и C#.
- Эти компоненты позволяют решить тригонометрические функции, такие как Синус, Косинус, Тангенс и др.
- Свиток Time включает набор компонентов, которые позволяют создавать примеры даты и времени.
- Свиток Utility - это 'мешок' с полезными компонентами, которые можно использовать в различных математических уравнениях. Зайдите сюда, если вы пытаетесь найти максимальные и минимальные значения двух списков чисел; или среднее в группе чисел.
1.3.3.2. ОПЕРАТОРЫ
Как было указано ранее, операторы - это наборы компонентов, которые используют алгебраические функции с двумя числовыми значениями входа, которые дают одно значение выхода.
Большую часть времени, вы будете использовать Математические операторы (Math) для совершения арифметических действий с числовыми множествами. Тем не менее, эти операторы могут также использоваться для различных типов данных, включая точки и векторы.
1.3.3.3. УСЛОВНЫЕ ОПЕРАТОРЫ
Почти каждый язык программирования имеет метод определения условных выражений. В большинстве случаев, программист создает части кода, чтобы задать простой вопрос "Что если". Что если область контура пола превышает программные требования? Или, что если изгиб моей крыши превышает реальные данные? Эти важные вопросы представляют высокий уровень абстрактного мышления. Компьютерные программы способны анализировать вопросы "что если" и действовать в зависимости от ответа на этот вопрос. Давайте посмотрим на очень простое условное выражение, которое программа может понять: Если объект - кривая, удалить его. Часть кода сначала смотрит на объект и определяет единичные булевые значения для решения кривая это или нет. Среднего здесь не дано. Булевое значения равно True (правда), если объект - это кривая, или False (Ложь), если объект не кривая. Вторая часть утверждения выполняет действие в зависимости от результата условного утверждения; в этом случае, если объект - это кривая, то решение - удалить ее. Это условное утверждение называется If (Если) утверждение. Существуют четыре условных оператора (располагаются во вкладке Math/ свиток Operators), которые определяют условие и выдают булевое значение.
Компонент Equality (равенство) берет два списка и сравнивает первый элемент списка А с первым элементом списка Б. Если два значения одинаковые, тогда создается булевое значение True, напротив, если два значения неравные, тогда создается булевое значение False. Компонент повторяет этот процесс со списками в соответствии с заданными алгоритмами совпадения (по умолчанию устанавливается самый длинный список). У этого компонента имеются два выхода. Первый возвращает список булевых значений, который показывает, какие из значений в списке были равны другим значениям. Второй выход возвращает список, который показывает, какие значения не были равны другим, либо список, который получается из первого выхода.
Компонент Similarity (сходство) оценивает два списка данных и тестирует сходство между двумя числами. На деле, это очень похоже на способ работы компонента Equality, который сравнивает два списка, за одним исключением: у него есть вход для процентов, который определяет степень списка А, которую список Б может исказить до того как неравенство будет определено. Компонент Similarity также имеет выход, который определяет абсолютное значение расстояния между двумя входными списками.
Компонент Larger Than берет два списка данных и определяет, больше ли первый элемент списка А, чем первый элемент списка Б. Два выхода позволяют вам определить, хотите ли вы определить два списка в соответствии с условием больше чем (>) или больше чем и равняется (>=).
Компонент Smaller Than выполняет противоположное действие компонента Larger Than. Компонент Smaller Than определяет, если список А меньше, чем список Б и возвращает список булевых значений. Схоже, два выхода позволяют определить вам, хотели бы вы определить каждый список в соответствии с условием меньше чем (<) или меньше чем и равно (<=).
1.3.3.4. ТРИГОНОМЕТРИЧЕСКИЕ КОМПОНЕНТЫ
Файлы упражнения, которые сопровождают этот раздел: Download
Мы уже показали, что мы можем использовать компонент Expression (или Evaluate) для определения условных выражений, а также для вычисления алгебраических уравнений. Тем не менее, существуют другие способы вычисления простых выражений, используя несколько встроенных Тригонометрических функций. Мы может использовать эти функций для определения периодического феномена как синусоидальная волновая форма, например, волны океана, звуковые волны и световые волны.
- Линия
y(t) = 0
- Синусная кривая
y(t) = sin(t)
- Винтовая спираль
x(t) = cos(t)
y(t) = sin(t)
z(t) = b(t)
- Спираль
x(t) = t*cos(t)
y(t) = t*cos(t)
В этом примере, мы будем использовать Grasshopper для создания различных тригонометрических кривых, используя компоненты тригонометрических функций из раздела Math:
Мы только что создали линию, соединив массив точек с кривой. Давайте попытаемся использовать некоторые из Тригонометрических компонентов Grasshopper, чтобы изменить кривую:
</li>
Сейчас вы должны видеть синусоидальную волновую кривую вдоль оси X в Rhino
</li>
Сейчас мы создали 3D винтовую спираль
Сейчас вы должны увидеть спиральную кривую
1.3.3.5. ВЫРАЖЕНИЯ
Файлы упражнения, которые сопровождают этот раздел: http://grasshopperprimer.com/appendix/A-2/1_gh-files.html
Компонент Expression (и его брат компонент Evaluate) представляет собой очень гибкий инструмент, который можно использовать для различных приложений. Мы можем использовать компонент Expression (или Evaluate), чтобы решать математические алгоритмы и выдавать числовые данные.
В следующем примере, мы рассмотрим математические спирали, которые можно наблюдать в природе, и как мы можем использовать несколько компонентов Functions для создания похожих паттернов в Grasshopper. Наши тригонометрические кривые мы возьмем за начальную точку.
Дважды кликните на компоненте Expression, чтобы открыть редактор Grasshopper Expression
Вы можете создавать различные паттерны Вороного, меняя значение слайдеров Factor, Count и Radius. Ниже приведены три примера:
- Factor = 1.000, Radius = 15
- Factor = 0.400, Radius = 10
- Factor = 0.200, Radius = 7