2019/2020 - Компютърна графика и ГПИ (Софтуерно инженерство)

Регистрирай се за курса

Внимание!!!

Всеки студент трябва да се регистрира в Google Classroom и да се присъедини към курс с код: c6yjhfw

https://meet.google.com/iqx-ekwy-qog

Анотация

Целта на тази учебна дисциплина е придобиване на теоретични знания и практически умения в областта на компютърната графика – диалоговите графични системи, геометрично моделиране, алгоритмите за визуализация, създаване на ГПИ и др. Практическа задача за студентите е изграждане на проект със средна сложност – диалогова система за графично моделиране с графичен потребителски интерфейс. Придобитите знания и умения са полезни както при разработката на подобни системи, така и при използването на такива в практиката. КОНСПЕКТ

Лекции и упражнения

Лекциите както и допълнително помощни материали за упражненията ще намерите в Google Classroom. В помощните материали в тази страница може да намерите презентациите към лекциите, както и кода на примерен "стартов" проект, който при желание може да използвате за основа на вашият проект.

Упражнениета ще се провеждат неприсъствено и самостоятелно (етапи 1 и 2). Три са основните етапи:

  1. Запознаване с изискванията към проекта;
  2. Работа по проект;
  3. Въпроси и обсъждане на възможни проблеми свързани с разработката на проектите - онлайн т.е. ще отговарям на въпроси по e-mail и др. средства.

Изисквания

Всеки студент трябва да разработи проект по Компютърна графика и ГПИ. Проекта трябва да представлява диалогова система за графично моделиране (графичен редактор) с примитиви от векторен тип. Диалоговата система за графично (2D) моделиране трябра да бъде със следните функционални възможности:

  1. Изграждане на изображение от различни графични примитиви (векторни) – например точки, отсечки, многоъгълници, елипси и др.; (2.5 точки)
  2. Визуализация на примитивите на базата на техните визуализационни характеристики като цвят, дебелина на линия, прозрачност и др.; (2.5 точки)
  3. Указване на графичен примитив от изображението; (2.5 точки)
  4. Манипулиране с графични примитиви – например, преместване, завъртане, мащабиране и др.; (2.5 точки)
  5. Създаване на структура на изображението чрез йерархично групиране, т.е. създаване на групи от примитиви и/или други групи; (5 точки)
  6. Манипулиране с групи – например, преместване, завъртане, мащабиране, различни видове разгрупиране и др.; (5 точки)
  7. Различни начини за определяне на характеристики на обектите от изображението – например задаване на цвят чрез името му, именуване на обектите от изображението и др.; (2.5 точки)
  8. Различни начини на задаване на операциите от потребителя – например чрез меню, бутони, мишка и др.; (2.5 точки)
  9. Поддръжка на богат набор от операции за редактиране на изображение като добавяне на елементи, отстраняване на елементи, копиране, актуализация на характеристики, йерархично групиране и разгрупиране и др.; (2.5 точки)
  10. Различни възможности за избор на обект(и) от изображението; (2.5 точки)
  11. Използване на многопрозоречна техника за поддръжка на няколко изгледа на едно и също изображение, както и за работа с няколко изображения едновременно; (бонус 5 точки)
  12. Различни възможности за четене/запис на модела на изображението от/на външен носител. (10 точки)

Вие можете да:

  • използвате произволен език за програмиране (за предпочитане обектно ориентиран);
  • използвате произволна среда за разработка;
  • използвате произволна операционната система;
  • работите самостоятелно или в групи от двама човека (на изпита всеки решава самостоятелно задачата);
  • използвате произволна графична библиотека; 
  • използвате стартовия проект (даден е в помощните материали), като основа за създаване на собствен проект;
  • обсъждате проблема, изискванията и материалите с всеки;

Вие НЕ можете да:

  • използвате проекти (или части от тях) създадени от други лица за целите на този курс, включително създадени в предишни учебни години;
  • използвате проекти (или части от тях) създадени от други лица за сходни цели;
  • използвате код, който не сте реализирали собственоръчно (с изключение на код от стартовия проект);

Критерии за оценяване

Оценката на проект се формира по формулата: (20 + Брой точки)/10. Закръглява се до цяла оценка (по общоприетите правила). Оценката се получава на практическата част от изпита при решена задача и при представен проект. Задачата се състои в промяна на разработения проект в определена насока (например добавяне на нов тип примитив и др.). Всеки който получи 3.00 или повече на практическата част има право да се яви на теория. Теоретичния изпит е под формата на тест с 20 затворени въпроса (всяки верен отговор носи 2 точки, а всеки грешен 0-ла). Двете оценки практическа и от теория формират крайната оценка по предмета.

Работа през семестъра и предаване на проекта

Всеки судент е длъжен да работи по проекта си през семестъра. Работата задължително става с използването на SVN сървъра на ФМИ (повече информация за достъпа и начина на използването на тази система за контрол на версиите вижте сайта на сървъра тук). Всеки студент ще получи име и парола за достъп до своето SVN хранилище (repository), как ще стане това ще бъде обявено по-късно, като това не пречи всеки да започне работа по проекта си.

Когато по един проект се работи от двама души, то те трябва да използват хранилището на единия, като другия бива присъединен с право за достъп, чрез интерфейса на SVN сървъра описан по-горе.

Очаква се в хранилището да бъдат качени всички съществени промени от началото на развитие на проекта до окончателното му завършване. Всеки решава дали да изпраща промените (commit) си в сървъра по-често или по-рядко, но задължително по всеки проект трябва да има поне 4 commit-а в течение на семестъра: В началото при съзадване на празен проект (или съответния стартов проект от помощните материали, ако такъв ще бъде използван), през 5-та седмица на триместъра, през 8-ма седмица и 10-та седмица (за задочно обучение пропорционално от първото занятие до деня преди изпита). Състоянието на проекта в тези версии може да окаже влияние върху общия брой на точките, които ще получите. От 10-та седмица до изпита всеки може да продължи работата си по проекта и съответно да продължава да качва промени в хранилището.

Очаква се проекта да се намира в подпапка trunk/CGProject на SVN хранилището. Той трябва да е във вид готов за сваляне и компилация. Проекти не отговарящи на това изискване няма да бъдат проверявани и оценявани.

На изпита всеки ще използва последното състояние на работното копие, като след решение на задачата трябва да я качи като нова версия в хранилището.

Проектите подлежат и ще бъдат проверявани автоматично и ръчно. Автоматичната проверка включва (но не се ограничава само до) използване на системи за автоматизирана проверка за плагиатство (т.е. преписване от ваши колеги и/или от чужди проекти в Интернет). Ръчната проверка представлява преглед и експерементиране с проекта от страна на преподавател. При установяване на плагиатство или съмнение за такова точките на съответните студенти ще бъдат драстично намалени (пропорционално на процента на "взаимстваните" части от код), в допълнение на това ще бъде публикуван списък с провинилите се студенти, както и ще се вземат всички други мерки в съответствие с Регламента за реакция при нечестни прояви.

Литература

  • Д. Димов, "Компютърна графика", Пловдивско унуверситетско издателство, 1999;
  • Д. Димов, А. Пенев, "Ръководство за упражнения по компютърна графика", Пловдивско унуверситетско издателство, 2002;
  • A. P. Godse, Computer Graphics, Technical Publications, 2009, 564 pages, ISBN 8-184-31737-9;
  • Peter Shirley, Steve Marschner, Fundamentals of Computer Graphics, A K Peters, 2009, 752 pages, ISBN 1-568-81469-0;
  • John Vince, Mathematics for Computer Graphics (3rd Edition), Springer, 2010, 293 pages, ISBN 1-849-96022-4;
  • Sumanta Guha, Computer Graphics Through OpenGL: From Theory to Experiments, CRC Press, 2010, 858 pages, ISBN 1-439-84620-0;
  • и други.

Помощни материали