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

Неизвестные животные могут обитать в «Небесный ямах» Китая

В Раменском прошел концерт для семей участников СВО при участии представителей КСВО

Москвичи могут спланировать досуг ребенка с помощью сервисов mos.ru

Молодую маму парализовало после анестезии в краснодарском роддоме





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

Новости от 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

"Терпению Путина пришел конец": Появилось объяснение отзыву посла России из Армении

Поддержка проектов в области культуры и искусства

Пластический хирург, косметолог и дерматолог Мадина Байрамукова: как правильно спать, чтобы не было морщин

Ландыши и купальницы распустились на лесных полянах Подмосковья

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

Бастрыкин поручил возбудить новое дело после нападения на медиков в Самарской области

Количество пользователей-инвесторов на платформе «Атомайз» превысило 72000

Спектакль "Курочка ряба" театра кукол Бурятии "Ульгэр": Россия, Культура, Театр, Дети

Посол Антонов: США пора смириться с тем, что РФ проводит независимую политику

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

Этап Кубка ВС РФ по рукопашному бою памяти Героев России О. Ильина и А. Соломатина прошел в Москве

Курс доллара на Мосбирже упал ниже 89 рублей впервые с конца января

Международный форум БРИКС проходит в Москве

Обрабатывающая промышленность Москвы в I квартале 2024 года выросла в 1,5 раза

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

23 МАЯ РОССИЙСКАЯ МЕЖДУНАРОДНАЯ АКАДЕМИЯ ТУРИЗМА ОТМЕТИЛА СВОЙ 55-Й ДЕНЬ РОЖДЕНИЯ. ФОТОРЕПОРТАЖ

Chanel, коллекция Resort 2025

Количество пользователей-инвесторов на платформе «Атомайз» превысило 72000

Инновационные устройства молодого отечественного бренда D.Fresh

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

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

Абсцесс остался позади // Андрей Рублев первым из игроков топ-10 вышел во второй круг

Касаткина опустилась на 13-ю строчку в рейтинге WTA, Рахимова поднялась на 18

"Ролан Гаррос" стартовал в Париже

Moscow.media

Исполнитель хита “На Заре 2020” Сергей АРУТЮНОВ оживил ещё один хит из 20-го века и выпустил песню “Лететь” вместе с её создателями - группой Амега.

Машина съехала в кювет и опрокинулась. Водитель погиб

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

Бузова и "Зенит"











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

Rss.plus






Экоакция «Удивительный лес» прошла 11 раз в Подмосковье

Эксперты: По семейной ипотеке в Москве доступно лишь 45% квартир в новостройках

В Москве состоится презентация спортивно-зрелищной программы ПМЭФ-2024

Поддержка проектов в области культуры и искусства