Skip to content

Latest commit

 

History

History
27 lines (18 loc) · 3.68 KB

Задание.md

File metadata and controls

27 lines (18 loc) · 3.68 KB

Вторая практическая работа

Установка графического модуля

Для работы интерактивной графики (можно крутить мышкой, приближать колёсиком и сдвигать правым кликом, это модуль THREE.js) в Jupyter Вам понадобятся следующие команды. Откройте терминал в этой папке (Create new file -> terminal) и введите:

pip3 install --no-index --find-links ./pythreejs pythreejs
jupyter nbextension install --py --user pythreejs
jupyter nbextension enable --py --user pythreejs

Ваше решение

Пишите решения в файле solution.py на месте пустых функций (где стоит raise NotImplementedError). В этот раз Вам предстоит работать самостоятельно, задание 2 является необходимым для заданий 3, 4 и 5. Вам предстоит реализовать функции

  1. (10 баллов) angleDefect --- подсчёт дефекта угла в данной вершине.
  2. (10 баллов) buildLaplacianOperator --- в качестве опциональных аргументов принимает массив якорей (номеров вершин) и положительное число ---- вес якорей в матрице. Возвращает матрицу оператора Лапласа в виде numpy-массива.
  3. (10 баллов) smoothen --- сглаживает поверхность при помощи buildLaplacianOperator. В качестве опционального аргумента принимает степень сглаживания от 0 до 1, ничего не возвращает --- изменяет координаты вершин внутри класса.
  4. (10 баллов) transform --- принимает массив якорей (номеров вершин), массив их координат той же длины и положительное число --- вес якорей в матрице. Аналогично, с помощью buildLaplacianOperator изменяет координаты вершин.
  5. (10 баллов) dragon --- в случае эффективной работы функции smoothen или transform на сетке dragon.obj Вы можете проиллюстрировать это в отдельной функции dragon. Ничего не принимает на вход, ничего не выводит, изменяет координаты вершин согласно Вашей фантазии.

Запуск

Для просмотра получившийся поверхности Вам нужно запустить Jupyter-сервер. Зайдите в настройки проекта (значок гаечного ключа) и нажмите внизу страницы Plain Jupyter Server. В нём запустите test.ipynb или создайте свой ноутбук в этой папке. Вам доступны уже готовые сетки teddy.obj малого размера и dragon.obj большого, можете создавать свои с помощью конструктора Mesh(faces, vertex_coordinates). Код ниже подключит Ваше решение, создаст сетку из файла и отобразит её. Смотрите также test.ipynb.

import solution
mesh = solution.Mesh.fromobj("teddy.obj")
mesh.draw()