В курсе будет рассмотрено применения классов в языке Python для создания физического симулятора. Будет представлен пример использования объектно-ориентированного подхода к построению программ, изучены базовые приемы проектирования гибкой и расширяемой архитектуры. На лекциях планируется ознакомление с библиотекой OpenCV, методами визуализации и последовательной реализации системы с желаемым поведением.
https://www.youtube.com/playlist?list=PLEvAmOZOOI2aXPBiS8Alvrz4Ya85uayeU
-
На лекции будут рассмотрены основные понятия компьютерного зрения (представление изображения в компьютере, фильтры), рисование графических примитивов с помощью библиотеки OpenCV, будет рассказано о месте зрения в программном комплексе гуманоидного робота и связи с другими модулями. Будет кратко рассказано о базовых и производных классах (с одновременной демонстрацией процесса написания кода), будет реализован простой физический симулятор с несколькими типами фигур (круг, квадрат, треугольник, линия), отталкивающимися от стен. Будут изложены методы наглядной визуализации на примере связи координаты и цвета, а также обработка простых сигналов с клавиатуры.
-
В симулятор будет добавлен эффект гравитации, отслеживание с помощью графиков кинетической, потенциальной и полной энергии в режиме реального времени. Будет дан обзор физических моделей столкновений объектов (реализация планируется на 3 лекции). Будут даны примеры использования лямбда-функций и функций как параметров для вычисления цвета как функции координат и скоростей. Будет рассказано о типах данных, будут введены вещественные скорости объектов, генерация объектов произвольного типа с произвольными характеристиками. Будут изложены предпосылки к введению дополнительного уровня абстракции для удобства работы с объектами любого типа (реализация планируется на 3 лекции).
-
На лекции будут рассмотрены модели освещения и реализована модель освещение Ламберта. Будет дано понятие поверхности с точки зрения визуализации, будет построена модель точечного источника света. Планируется написание программы, позволяющей изменять положение источника света с одновременной визуализацией результата. Если останется время, будет реализована модель освещения плоскости.
-
На лекции будут рассмотрены методы оптимизации построения освещения, в том числе триангуляция, игнорирование закрытых областей, предподсчет различных состояний объектов и использование симметрий для уменьшения вычислительной сложности процесса.
-
На семинаре планируется рассмотрение рекурсивных алгоритмов: вычисления чисел Фибоначчи, построение двумерных рекурсивных деревьев, построение рандомизированных деревьев и небинарных деревьев. Будут рассмотрены варианты добавления циклического и рандомизированного поведения деревьев во времени. Затем генерация деревьев будет совмещена с освещением триангулированных поверхностей с предыдущего семинара и выведена в трехмерное пространство. Будет рассмотрен метод построения модели горного ландшафта на основе рандомизированных деревьев. В конце семинара будет кратко рассмотрена программа для построения окрашенного множества Мандельброта, будет дано представление о сходимости последовательностей. Если останется время, будет введена размерность Хаусдорфа в применении к анализу размерностей различных объектов в R^2.
-
Семинар будет посвящен сборке всех разработанных программ в модель Солнечной системы с гравитирующей массой, будут рассмотрены простые модели симуляции гравитации с неоднородными полями, будет дано представление о построении моделей с полем, имеющим ненулевой ротор. Будет построена иерархическая система объектов: Солнце, планеты, спутники планет и метеорные кольца.
-
На семинаре будет продолжено рассмотрение рекурсивных деревьев, в частности с добавлением циклического изменения параметров во времени, и фракталов. Генерация рекурсивных деревьев продолжится в трехмерном пространстве на основе построенной на предыдущих семинарах модели освещения триангулированных объектов. Будут рассмотрены различные подходы к построению самоподобных структур: итеративный и рекурсивный (на примере губки Менгера глубины 3), а также параметрическая генерация множеств на основе Кривой Дракона.
-
В завершающем курс семинаре планируется интеграция написанных модулей в простую игру. Будет рассмотрена формализация уровня, создание меню и сохранений. В конце семинара будет дан обзор методов оптимизации рендеринга трехмерных объектов и некоторых более сложных моделей освещения, а также расширенная секция ответов на вопросы по всему курсу.