Мы в Telegram
Добавить новость

Диетолог Соломатина предупредила о вреде некоторых супов

Депутат Маликов: предприниматели — энергия экономики Подмосковья

Свыше 1,5 тыс. бассейнов работает в Москве

Подросток оказался в реанимации после перекуса бутербродом в Петербурге





Новости сегодня

Новости от TheMoneytizer

Разработка программного модуля для построения 3D модели на С++

Техническое задание
на разработку программного обеспечения
1. Название ПО: vtxgen
2. Описание ПО.
ПО является одним из компонентов более крупной программы, служащей для управления
голографической камерой. В программе присутствует модуль трехмерной визуализации
голограммы и алгоритмически найденных дефектов в ней, использующий OpenGL для
визуализации. Визуализация строится на основе массива бинарных изображений. В OpenGL
построение трехмерных моделей осуществляется из треугольных полигонов, имеющих по
три вершины, расположенных в трех измерениях пространства. Для отрисовки каждого
треугольного полигона используется информация о расположении каждой из его вершин в
трех измерениях относительно центра оси. Задача ПО – расчитать координаты каждой
вершины таким образом, чтобы можно было построить трехмерную модель, используя
минимальное возможное количество полигонов. Также, ПО должно принимать три
коэффицента масштабирования (по трем осям) модели, передаваемые через API.
Исполнителю также предоставляется исходный код программы visualise.exe в приложении к
ТЗ. Эта программа является простым визуализатором результата работы vtxgen. К исходному
коду также прилагается Readme c руководством пользователя и несколько папок с массивами
изображений.
3. Задачи, выполняемые ПО.
3.1. API ПО должно иметь одну точку входа — функцию
CalculateGLVtx().
Прототип функции CalculateGLVtx():
// Calculates vertex data for OpenGL rendering from the vector
// of 1-bit 2D images.
//
// Note that std::vector<bool> is a special standard container where
// each bool uses only one bit of space rather than one byte as
// a normal bool would. Since you can't take the address of a bit
// within a byte, things such as operator[] can't return a bool&
// but instead return a proxy object that allows to manipulate
// the particular bit in question. Since this proxy object is not
// a bool&, you can't assign its address to a bool* like you could
// with the result of such an operator call on a "normal" container.
//
// @param images Vector of 1-bit 2D images with [z][x][y] orientation.
// @param x_scale Scale factor in x axis.
// @param y_scale Scale factor in y axis.
// @param z_scale Scale factor in z axis.
// @return Vertex data for OpenGL. The first vector holds the vertex data
// for the "inside" objects found by the NN, the seconds vector holds the
// vertex data for the "outside" space in between those objects.
VTXGEN_API std::pair<std::vector<GLfloat>, std::vector<GLfloat>> CalculateGLVtx(
const std::vector<std::vector<std::vector<bool>>>& images,
float x_scale,
float y_scale,
float z_scale);
Тип GLfloat содержится в библиотеке glfw3.
3.2. ПО должно рассчитывать массив вершин треугольных полигонов, необходимых для
построения 3D-модели, используя следующий алгоритм:
3.2.1. Белые пиксели входных изображений считаются вертикальными гранями внутренних
объектов.
3.2.2. Черные пиксели входных изображений считаются вертикальными гранями внешних
объектов.
3.2.3. Горизонтальные грани должны быть рассчитаны программой.
3.2.4. Все грани должны располагаться под прямым углом, наклон не допускается.
3.2.5. Если массив изображений содержит только одно изображение — передняя сторона 3Dмодели должна быть равна задней.
3.2.6. В местах пересечения граней внешних и внутренних объектов должны присутствовать
обе грани.
3.2.7. Внутри внешних и внутренних объектов граней быть не должно.
3.2.8. Все объекты должны быть «закрыты» со всех сторон и полые внутри, включая объекты
расположенные с краю модели.
3.2.9. Модель должна быть «отзеркалена». То есть, первые изображения из массива должны
учитываться как грани с большим значением по оси Z, чем последние.
3.2.10. Каждая грань должна состоять ровно из двух треугольников.
3.3. Возврат функции
CalculateGLVtx() должен содержать пару векторов значений GLfloat
для внутренних и внешних объектов. Они должны выглядеть следующим образов:
{
1 вершина 1 треугольника X, 1 вершина 1 треугольника Y, 1 вершина 1 треугольника Z,
2 вершина 1 треугольника X, 3 вершина 1 треугольника Y, 3 вершина 1 треугольника Z,
3 вершина 1 треугольника X, 2 вершина 1 треугольника Y, 3 вершина 1 треугольника Z,
1 вершина 2 треугольника X, 1 вершина 2 треугольника Y, 1 вершина 2 треугольника Z,
2 вершина 2 треугольника X, 3 вершина 2 треугольника Y, 3 вершина 2 треугольника Z,
3 вершина 2 треугольника X, 2 вершина 2 треугольника Y, 3 вершина 2 треугольника Z,
и.т.д}
Порядок треугольников не имеет значения, однако порядок вершин имеет. Треугольники не
обязательно должны иметь общие грани или быть расположены рядом.
4. Компоненты ПО.
4.1. DLL vtxgen.
5. Требования к написанию и оформлению программного кода.
5.1. Выбор языка программирования — Visual C++ 17 стандарта ISO C++ 17.
5.2. Стиль написания и форматирования кода должен стремиться к стандарту Google
(
https://google.github.io/styleguide/cppguide.html).
5.3. Все функции, переменные и другие элементы кода должны иметь английские названия,
использование транслитерации с русского языка не допускается.
5.4. Код должен быть снабжён понятными комментариями на английском языке.
5.5 Функции должны быть снабжены комментариями со следующим оформлением:
5.5.1. В файле заголовка:
// Краткое описание задачи, выполняемой функцией.
//
// Пояснение, если функция содержит неочевидное поведение, которое требуется принимать во
// внимание.
//
// @param аргумент_1 Описание аргумента.
// @param аргумент_2 Описание аргумента.
// @param аргумент_3 Описание аргумента.
// @return Описание возврата функции.
5.5.2. В файле исходного кода:
// Подробное описание
// работы функции.
//
// Пояснение, если функция содержит неочевидное поведение, которое требуется принимать во
// внимание.
5.6. Максимальная длина одной строки кода — 80 знаков.
5.7. Прототипы функций должны быть вынесены в отдельные файлы заголовка.
5.8. Платформа — Windows 10 64 бит.
6. Дополнительные пожелания заказчика.
6.1. ПО должно использовать параллельные вычисления там, где это возможно.
6.2. По возможности, минимальное использование сторонних библиотек.
7. Требования к приемке-сдаче проекта.
7.1. Комплект сдачи проекта.
7.1.1 Исходный код программы.
7.1.2. Инструкции по сбору и компиляции проекта с использованием Microsoft Visual Studio
2017.
7.1.3. Документация к API.
7.2. Работа всех компонентов ПО должна быть протестирована исполнителем на системах,
удовлетворяющих требованиям Windows 10 64 бит.
7.3. Заказчику предоставляется 4 календарные недели на тестирование программы. В случае

некорректного функционирования – программа должна быть доработана исполнителем. После
доработок заказчику предоставляется дополнительные две недели на тестирование.
8. Срок выполнения проекта 1 месяц.

Читайте на 123ru.net


Новости 24/7 DirectAdvert - доход для вашего сайта



Частные объявления в Вашем городе, в Вашем регионе и в России



Smi24.net — ежеминутные новости с ежедневным архивом. Только у нас — все главные новости дня без политической цензуры. "123 Новости" — абсолютно все точки зрения, трезвая аналитика, цивилизованные споры и обсуждения без взаимных обвинений и оскорблений. Помните, что не у всех точка зрения совпадает с Вашей. Уважайте мнение других, даже если Вы отстаиваете свой взгляд и свою позицию. Smi24.net — облегчённая версия старейшего обозревателя новостей 123ru.net. Мы не навязываем Вам своё видение, мы даём Вам срез событий дня без цензуры и без купюр. Новости, какие они есть —онлайн с поминутным архивом по всем городам и регионам России, Украины, Белоруссии и Абхазии. Smi24.net — живые новости в живом эфире! Быстрый поиск от Smi24.net — это не только возможность первым узнать, но и преимущество сообщить срочные новости мгновенно на любом языке мира и быть услышанным тут же. В любую минуту Вы можете добавить свою новость - здесь.




Новости от наших партнёров в Вашем городе

Ria.city

Эксперты из Мексики посетили филиал ФГБУ «Центр оценки качества зерна» в Раменском

Нижегородский депутат приобрёл франшизу «МК в Нижнем»

Владислав Мурашов назначен главой ГУСТ Подмосковья

Рыбные рынки Москвы приготовили для гостей рыбной недели кулинарные перформансы

Музыкальные новости

Росгвардейцы обеспечили безопасность транспортировки ракеты-носителя и транспортного грузового корабля на космодроме «Байконур» (видео)

КУРОЧКА РЯБА - спектакль театра кукол Бурятии "Ульгэр": Россия, Культура, Театр, Дети

Сотрудники Росгвардии обеспечили безопасность транспортировки ракеты-носителя «Союз-2.1б» и грузового корабля «Прогресс МС-27» на космодроме «Байконур»

"Спартак" и "Оренбург" сыграли вничью в заключительном матче РПЛ

Новости России

Современная система освещения. На «Новаторской» установили 90% ламп

Mazilla – подбор микрозаймов для клиентов

Владислав Мурашов назначен главой ГУСТ Подмосковья

Полина Максимова стала новым амбассадором подписки Газпром Бонус

Экология в России и мире

Электрические щетки для детей Revyline RL 035 Kids Pink доступны в представительстве марки в Хабаровске

Волшебное путешествие в мир музыки и кино

Компания ICDMC приняла участие в торжественном открытии выставки “Тульское качество”

Ксения Караулова: о пользе гастродипломатии и новом взгляде на национальную кухню

Спорт в России и мире

Российский теннисист Сафиуллин опустился на две позиции в рейтинге ATP

Теннисист Рублев объяснил, почему проиграл сет в первом круге "Ролан Гаррос"

Россиянка Рахимова вышла в полуфинал турнира WTA в Рабате

Надежда Петрова высказалась о перспективах Арины Соболенко снова возглавить рейтинг WTA

Moscow.media

Объявлена цена первой модели новой российской марки Xcite

Летнее нижегородское утро.

В Судаке проверили бывших мигрантов, не вставших на воинский учет

Работники транспортных прокуратур совместно с воспитанниками «Семейного центра Можайский» посетили парк «Патриот».











Топ новостей на этот час

Rss.plus






Компания из Балашихи разработала новую систему очистки воды

Полина Максимова стала новым амбассадором подписки Газпром Бонус

Владислав Мурашов назначен главой ГУСТ Подмосковья

Рыбные рынки Москвы приготовили для гостей рыбной недели кулинарные перформансы