Dynamo
Primer for v2.0
Русский
Русский
  • О программе
  • Введение
    • Что представляет собой программа Dynamo и как она работает?
    • Руководство пользователя Dynamo Primer, сообщество и платформа Dynamo
  • Настройка Dynamo
  • Пользовательский интерфейс
    • Рабочее пространство
    • Библиотека
  • Узлы и провода
  • Основные узлы и понятия
    • Указатель узлов
    • Геометрия для машинного проектирования
      • Обзор концепции геометрии
      • Вектор, плоскость и система координат
      • Точки
      • Кривые
      • Поверхности
      • Тела
      • Сети
    • Компоновочные блоки программ
      • Передача данных
      • Math
      • Logic
      • Строки
      • Цвет
    • Проектирование на основе списков
      • Что такое список
      • Работа со списками
      • Списки списков
      • Многомерные списки
    • Словари в Dynamo
      • Что такое словарь
      • Узлы Dictionary
      • Словари в узлах Code Block
      • Примеры использования Revit
  • Пользовательские узлы и пакеты
    • Пользовательские узлы
      • Пользовательские узлы: введение
      • Создание пользовательских узлов
      • Публикация узлов в библиотеку
    • Пакеты
      • Пакеты: введение
      • Практикум по работе с пакетом: Mesh Toolkit
      • Разработка пакетов
      • Публикация пакетов
      • Импорт Zero Touch
  • Dynamo для Revit
    • Подключение к Revit
    • Выбор
    • Редактирование
    • Создание
    • Адаптация
    • Выпуск документации
  • Dynamo for Civil 3D
    • Совместимость с Civil 3D
    • Начало работы
    • Библиотека узлов
    • Примеры рабочих процессов
      • Дороги
        • Размещение осветительных столбов
      • Землеустройство
        • Размещение коммуникаций
      • Инженерные сети
        • Переименование колодцев
      • Железная дорога
        • Границы зазора
      • Топосъемка
        • Управление группами точек
    • Дополнительные разделы
      • Привязка объекта
      • Python и Civil 3D
    • Проигрыватель Dynamo
    • Полезные пакеты
    • Ресурсы
  • Бета-версия Dynamo в Forma
    • Настройка Dynamo Player в Forma
    • Добавление графов и предоставление к ним общего доступа в Dynamo Player
    • Запуск графов в Dynamo Player
    • Отличия вычислительной службы Dynamo от классического приложения Dynamo
  • Создание кода в Dynamo
    • Узлы Code Block и DesignScript
      • Что такое Code Block
      • Синтаксис DesignScript
      • Сокращение
      • Функции
    • Создание геометрии с помощью DesignScript
      • Основы работы с геометрией посредством DesignScript
      • Геометрические примитивы
      • Векторная математика
      • Кривые: интерполяционные и по управляющим точкам
      • Перенос, поворот и другие преобразования
      • Поверхности: интерполяционные, лофтированные, по управляющим точкам и поверхности вращения
      • Параметризация геометрических объектов
      • Пересечение и обрезка
      • Логические операции с геометрическими объектами
      • Генераторы точек Python
    • Python
      • Узлы Python
      • Python и Revit
      • Настройка собственного шаблона Python
    • Изменения языка
  • Практические советы
    • Методы создания графиков
    • Методы создания сценариев
    • Справочник по созданию сценариев
    • Управление структурой программы
    • Эффективная работа с большими наборами данных в Dynamo
  • Примеры рабочих процессов
    • Процессы для начала работы
      • Параметрическая ваза
      • Точки притяжения
    • Индекс понятий
  • Руководство для разработчиков
    • Сборка Dynamo на основе исходного кода
      • Сборка DynamoRevit на основе исходного кода
      • Управление зависимостями и их обновление в Dynamo
    • Разработка для Dynamo
      • Начало работы
      • Пример использования узлов Zero-Touch — узел сетки
      • Выполнение сценариев Python в узлах Zero-Touch (C#)
      • Дальнейшая работа с Zero-Touch
      • Расширенная настройка узлов Dynamo
      • Использование типов COM (взаимодействие) в пакетах Dynamo
      • Пример использования NodeModel — настраиваемый пользовательский интерфейс
      • Обновление пакетов и библиотек Dynamo для Dynamo 2.x
      • Обновление пакетов и библиотек Dynamo для Dynamo 3.x
      • Расширения
      • Определение пользовательской организации пакетов для Dynamo 2.0 или более поздней версии
      • Интерфейс командной строки Dynamo
      • Интеграция с Dynamo
      • Разработка для Dynamo for Revit
      • Публикация пакета
      • Создание пакета из Visual Studio
      • Расширения в виде пакетов
    • Запросы на слияние
    • Ожидания от тестирования
    • Примеры
  • Приложение
    • Вопросы и ответы
    • Визуальное программирование и Dynamo
    • Ресурсы
    • Примечания к выпуску
    • Полезные пакеты
    • Файлы примеров
    • Таблица интеграции с основной программой
    • PDF для скачивания
    • Сочетания клавиш Dynamo
Powered by GitBook
On this page
  • Сложение объектов Vector
  • Вычитание объектов Vector
  • Умножение объектов Vector
  • Нормализация длины вектора
  • Векторное произведение
  • Скалярное произведение
Edit on GitHub
Export as PDF
  1. Создание кода в Dynamo
  2. Создание геометрии с помощью DesignScript

Векторная математика

PreviousГеометрические примитивыNextКривые: интерполяционные и по управляющим точкам

Last updated 2 years ago

В машинном проектировании редко бывает так, что объекты создаются сразу в своей конечной форме и конечном положении. Чаще всего созданные объекты приходится переносить, поворачивать и иным образом позиционировать относительно существующей геометрии. Векторная математика играет роль своего рода геометрического каркаса, определяющего направление и ориентацию геометрии, а также позволяющего осмыслять перемещения геометрии по 3D-пространству без их визуального представления.

Если отбросить все лишнее, можно сказать, что вектор представляет собой то или иное положение в 3D-пространстве. Под вектором чаще всего подразумевают конечную точку стрелки, исходящей из начала координат (0, 0, 0) и указывающей на это местоположение. Векторы создаются с помощью конструктора ByCoordinates, в котором используются координаты X, Y и Z для нового объекта Vector. Обратите внимание, что объекты Vector не являются геометрическими объектами и не отображаются в окне Dynamo. При этом информацию о созданном или измененном векторе можно вывести на печать в окне консоли:

// construct a Vector object
v = Vector.ByCoordinates(1, 2, 3);

s = v.X + " " + v.Y + " " + v.Z;

Объекты Vector поддерживают определенный набор математических операций, которые позволяют складывать, вычитать, умножать и иным образом преобразовывать объекты в 3D-пространстве точно так же, как и при работе с вещественными числами в одномерном пространстве числовой оси.

Сложение объектов Vector

Операция сложения объектов Vector позволяет получить сумму компонентов двух векторов. Визуально представить себе результат сложения векторов можно, поместив начало второго вектора в конечную точку первого. Операция сложения объектов Vector выполняется с использованием метода Add и представлена на схеме слева.

a = Vector.ByCoordinates(5, 5, 0);
b = Vector.ByCoordinates(4, 1, 0);

// c has value x = 9, y = 6, z = 0
c = a.Add(b);

Вычитание объектов Vector

Аналогичным образом можно вычесть один объект Vector из другого, используя метод Subtract. Результат вычитания двух векторов можно представить как расстояние от конечной точки одного вектора до конечной точки другого.

a = Vector.ByCoordinates(5, 5, 0);
b = Vector.ByCoordinates(4, 1, 0);

// c has value x = 1, y = 4, z = 0
c = a.Subtract(b);

Умножение объектов Vector

При умножении объекта Vector на какое-либо число его конечная точка перемещается в направлении, соответствующем направлению вектора, на расстояние, соответствующее длине вектора и множителю.

a = Vector.ByCoordinates(4, 4, 0);

// c has value x = 20, y = 20, z = 0
c = a.Scale(5);

Нормализация длины вектора

Зачастую при масштабировании вектора требуется, чтобы его длина стала равна значению коэффициента масштабирования. Этого можно легко добиться, выполнив нормализацию вектора, то есть приведя значение его длины к единице.

a = Vector.ByCoordinates(1, 2, 3);
a_len = a.Length;

// set the a's length equal to 1.0
b = a.Normalized();
c = b.Scale(5);

// len is equal to 5
len = c.Length;

Вектор С указывает в том же направлении, что и вектор А (1, 2, 3), но его длина теперь равна 5.

Векторное произведение

Векторная материка включает два дополнительных метода, не имеющих точных аналогов в одномерной математике: это векторное произведение и скалярное произведение. При векторном произведении создается объект Vector, который ортогонален (т. е. находится под углом 90 градусов) к двум существующим объектам Vector. В качестве примера можно привести ось Z, которая является векторным произведением осей X и Y (хотя исходные объекты Vector, на основе которых вычисляется векторное произведение, не обязательно должны быть ортогональны друг другу). Для вычисления векторного произведения используется метод Cross.

a = Vector.ByCoordinates(1, 0, 1);
b = Vector.ByCoordinates(0, 1, 1);

// c has value x = -1, y = -1, z = 1
c = a.Cross(b);

Скалярное произведение

Скалярное произведение — это еще одна дополнительная и чуть более сложная функция векторной математики. Результатом скалярного произведения двух векторов является вещественное число (а не объект Vector), соответствующее углу между этими векторами (но не равняющееся ему). Одним из полезных свойств этой функции является возможность определить, являются ли векторы перпендикулярными, поскольку только в этом случае их скалярное произведение равняется нулю. Для вычисления скалярного произведения используется метод Dot.

a = Vector.ByCoordinates(1, 2, 1);
b = Vector.ByCoordinates(5, -8, 4);

// d has value -7
d = a.Dot(b);