?

Log in

No account? Create an account
November 2016   01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Все совпадения - сами понимаете...

"- Что мы будем делать сегодня вечером, Брейн?
- То же, что и всегда, Пинки. Завоевывать мир!" (м/ф "Пинки и Брейн")

1995 год. ВМиК МГУ. Четвертый семестр.

- ...итак, мы прочитали вам двухнедельный интенсивный курс машинной графики, что называется - с полным погружением. Вы спросите - как мы будем принимать у вас экзамен? Я вам скажу - экзамена не будет!

В зале поднялся гул. Студенты, буквально, не верят своему счастью.

- Вместо экзамена, у нас будет конкурс. Каждый из вас напишет программу. И мы, преподаватели, будем ваши программы оценивать. Сразу скажу - эстетические критерии будут на первом месте. Победители получат призы... А вот, скажем, в прошлом году - трое человек в команде написали программу, которая заняла первое место, и она рисовала...


***
Вечер. Комната 213. Штаб по захвату мирового господства.

- Значит так, парни! - веско сказал я, выпуская дым сигареты в и без того прокуренную комнату, - Вы слышали, что там дают призы.
- Дык, эта - он не сказал, какие призы! - резонно говорит Шурик, - он какую-то туфту прогнал, когда про призы говорил!
- Это совершенно неважно, - отмахиваюсь я, - важно другое. Мы должны занять первое место, совершенно безотносительно того, какие там будут призы, и будут ли вообще.
- Именно! - встревает в разговор Пашич, наш третий сосед по комнате, - Просто потому, что первое место по праву наше! Мы с вами знаем, что мы лучшие программеры на курсе. Нам надо просто взять то, что и так наше.
- Постой, это мои слова, - говорю я, - и кроме того - ты с другого потока, вы не участвуете в этом конкурсе.
- Ну и что, - пожимает плечами Пашич, - с этим не должно быть никаких проблем.
- А теперь у меня к вам вопрос, - продолжаю я, - как же мы собираемся выиграть этот конкурс?
- Мы сделаем полноценный трассировщик лучей, так, как все его обосрутся делать - с наложением цветных текстур, - сказал Шурик, - известно, что именно трассировка лучей дает лучшее качество.
- И кроме того, - добавляю я, - мы взроем книги и статьи, и реализуем лучшие алгоритмы расчета освещения из известных на данный момент, так, чтобы он выдавал фотографически точные сцены.
- Еще - не ограничимся статикой, и сделаем анимацию, - добавляет Пашич, - и - напишем импортер моделей из 3D Studio.
- Это еще зачем? - спрашиваю я.
- Я художник. Нарисовать красивых моделей в редакторе 3DS для меня - плевое дело. Лицо человеческое - хотите? Я такое уже делал.
- Ты в деле, Пашич, - сообщаю я.

***
Днем позже. Коридор общежития.

- Слушай, Макс, а ты какую программу собираешься писать? - спрашиваю я.
- Думаю, сделать трассировку лучей в реальном времени.
- Макс, это невозможно. Вот просто - невозможно, и все.
- Я буду писать на ассемблере.
- Макс, это все равно невозможно.
- Я возьму простую сцену. Там будут прыгать по кругу три шарика. Каждый из них будет какого-то одног цвета.
- Макс. Трассировка лучей - не лучший способ заставить прыгать по кругу три шарика. Это делается в лоб закраской Гуро или Фонга. Разницы - не отличить.
- У меня будут тени.
- Тебе показать, как делаются в твоем случае тени?
- Не. Мне интересно сделать это трассировкой лучей на ассемблере.
- Как знаешь. Должен сказать - твоя программа, Макс, уныла, и никогда не займет первого места.
- Да я, Влад, и не претендую. Мне просто интересно ее сделать. А ваша?
- Увидишь. Мы, как ты понимаешь, собираемся брать первое место.

***
Пашич захватывает власть.

- Ну что, кто чего делать будет? - шокирует нас внезапным вопросом Пашич.
- Дык, это, Пашич, мы пока толком не поняли, как мы вообще это делать будем! Хер его знает, как этот трассировщик устроен, его еще придумать надо!
- А чего там сложного? Система состоит из ядра трассировки, объектов модели, модуля геометрических преобразований, и подсистемы отображения.s
- И?
- Давайте так. Я делаю ядро трассировки, Шурик - объекты модели и геометрические преобразования, а ты - отображение.
- Пардон, Пашич, а что там делать то, в отображении?
- Как что? Во-первых, привести True Color к палитре в 256 цветов, во вторых, записать это на диск, в третьих - показать.
- Пашич, да это же ерунда!
- Никакая не ерунда. Оптимальный подбор палитры - та еще задача.

***
Месяц до дедлайна.

- Вы чем занимаетесь? Я уже сделал первую версию ядра, а вы чего? Вот ты, Влад, чем занимаешься? – cпрашивает меня Пашич.
- Я? Я работаю над алгоритмом оптимального подбора палитры. Это, видишь-ли, оказалась довольно интересной математической проблемой.
- И где результаты? Я сейчас пользуюсь алгоритмом из статьи - и это полное говно.
- Я в курсе. Тот алгоритм и не может другого выдавать, он тупой.
- Ну и где код?
- А код практически готов. И если бы ты не урезал мне требования по памяти, он был бы готов еще месяц назад. Потому, что памяти не хватает, и мне пришлось изобразить интеллектуальную схему вытеснения своих данных на диск. Именно она сейчас и глючит – ацки сложна оказалась.
- Да вы вообще охренели! Один, пнимаешь, ковырятется с каким-то алгоритмом, а другой - вообще! – горячится Пашич.
- А что другой?
- А Шурик затеял делать универсальную библиотеку для работы с матрицами. На темплейтах. Ебануться. Ему всего-то надо было - сделать операции с матрицами 4х4.
- …всего-то захардкодить матричные операции 4х4, с чем справится даже первокурсник, не умеющий толком программировать? Так-так. кажется, я начинаю понимать, - недобро посмотрев на Пашича, говорю я, - Темплейты? Это что за такой хардкор вообще, кстати?
- А... Это новая хрень, которая недавно была добавлена в C++.
- Надо же, - поцокал языком я, - Как интересно - и почему это наш разумный Шурик так на ровном месте осложнил себе жизнь? Ты хоть на минуту об этом задумался?
- А чего тут задумываться?
- А я тебе объясню. Шурик превратил унылую задачку, которую ты ему назначил, в интересную для себя проблему, с которой ему не просто, и потому интересно справиться. Так же поступил и я - и поэтому, помимо лучшей в мире библиотеки для работы с матрицами, у нас будет лучший в мире аргоритм подбора палитры. А хули ты хотел, интересно, взяв самую интересную часть работы себе, и поручив нам второстепенное говно? Поразительно, как мы с Шуриком вообще на это согласились. Я до сих пор не понимаю.
- Ах вот как, значит? Да мне похуй, это, в конце концов, ваш конкурс!
- Да, Пашич, вот тут ты прав. Это НАШ конкурс! И если в матричной библиотеке и подборе палитры я уверен, то в лучшем в мире трассировщике, что составляет основу работы - я нихера не уверен! Я правду слышал от Шурика, что ты взял в качестве основы код из статьи нашего преподавателя, нет?
- Нет. То есть, не совсем. Ладно, замяли.
- Замяли?! Да как тебе вообще это в голову то пришло, Пашич, – списывать код нашего лектора? Ты совсем ебанулся? Думаешь, он свой код не узнает? Ты подставить нас хочешь? Нам же за такое банан влепят! Давай, рассказывай, как он у тебя устроен.
- Да все трассировщики устроены одинаково!
- Слыш, Шурик? Нам пиздец, - сажусь я на кровать.
- Пашич, - спокойно спрашивает его Шурик, - расскажи, откуда ты взял алгоритм и код.
- Я прочитал статью Шикина про трассировку лучей, вот она, в журнале. В статье приводится код. Ну, я так и сделал.
- Нам - полный пиздец, - уточнил я, вскочив, и начав мерять комнату шагами.
- Подожди, Влад, - говорит Шурик, - Пашич, и что ты сделал после того, как прочитал статью? Ты взял этот код?
- Сначала – да. Он заработал. Потом – переписал его.
- Паш, покажи свой код, пожалуйста, - говорю я. Паша показывает.
- Паш, - говорю я уже спокойно, - да у тебя тут названия классов и методов совпадают с точностью до буквы.
- А как, по твоему, мне надо называть, например, шар?! Жопой?!!

Шурик сидит на кровати, обхватив голову руками. Он понимает, что скандалить совершенно бесполезно. Совершенно. Пашич молчит. Я внимательно просматриваю код из статьи.

- Паш, я понимаю, что наш трассировщик сейчас умеет несравнимо больше, чем этот общий набросок в статье, - очень спокойно и аккуратно объясняю я, - Не дурак. И не собираюсь умалять твою работу, - вздыхая, говорю я, - Оно нехорошо, что ты не обсудив с нами, взял за основу подход из этой статьи. Но - сейчас рассуждать об этом уже поздно, так что давай реально замнем. У меня к тебе только просьба – измени все названия в коде, ладно? Хоть жопой назови, главное, чтобы сходство в глаза не так бросалось.

Все молчат.

- Паш, - прошу я, - поменяешь, ладно?
- Поменяю.
- Отлично.
- Но не сейчас. Сейчас мне надо ехать к сестре.
- Сейчас? И когда вернешься?
- Через два дня.
- Ты не можешь это отложить? Нам надо интегрироваться, времени осталось две всего две недели. Не можешь? Ну что тут сделаешь. Будем тебя ждать. Пока.

Паша уходит.

- Ну что, Шурик? – спрашиваю я, - Что ты молчишь? Скажи что-нибудь, а? Что ты вообще думаешь?

Шурик сидит на кровати, печально глядя в стену.

- Зря мы дали Паше руководить в этом проекте, - спокойно сказал Шурик после долгой паузы.

***
Последняя неделя. Наш код – собран вместе, и по большей части работает.

Мы умеем натягивать цветные текстуры на объекты произвольной формы. В том числе – “процедурные” текстуры…

У нас поддерживаются зеркальные, полупрозрачные, и матовые поверхности.

У нас реалистичная модель освещения, работающая с произвольным количеством источников света, как точечных, так и любых других. И – настолько совершенный подбор палитры, что люди не верят, что смотрят на картинку в 256 цветов.

Да. Мы умеем рендерить картинки фотографического качества. Фотография самого настоящего кирпичного шара (да-да – кирпичного!) из наших тестов, подсвеченного с двух сторон двумя источниками света разного цвета, разошлась по лабораториям факультета в качестве модной фоновой картинки для рабочего стола...

Одна проблема – осталась неделя, а у нас не работает импорт моделей из 3D Studio, и падает обработка произвольных полигонов… Так получилось, что обе этих критичных задачи почему-то были назначены на Шурика, и мы с Пашичем на данном этапе уже ничем не можем ему помочь – только носить кофе…

***
Два дня до дедлайна. Импорт моделей из 3DS , наша killer feature, на которую делалась основная ставка, не работает.

- Так, парни, - говорю я, - На 3DS уже расчитывать нельзя. Мы не успеваем. Предлагаю сконцентрироваться на том, что есть. Давайте вычищать баги, и рисовать сцены для демонстрации.
- Отличная идея, - говорит Паша, и начинает одеваться.
- А ты куда собрался?
- Я? К сестре.
- Паш, а ты разве не будешь помогать рисовать нам картинки? Как мы без тебя-то справимся?
- Ничего, нарисуете.
- И надолго ты к сестре?
- На два дня.
- Кидаешь, значит. В самый ответственный момент.
- В 3DS-е рисовать все равно не получится, а картинок можно собрать из тестов. У нас довольно много тестов, должно хватить. С этим вы и без меня справитесь.
- И ты даже не хочешь присутствовать при объявлении результатов? - отказываюсь верить в очевидное я.
- Вы же мне потом все расскажете? Ну ладно, парни, пока!
- Проваливай... – говорю я ему вслед любимое словечко Пашича.
- Что будем делать? – спрашивает Шурик.
- Ну что, - вздыхаю я, - это, Шурик, наш конкурс. Нам-то деваться некуда – у нас это вместо экзамена.
***
День объявления результатов конкурса.

- Как это – двойка? - не поверил я.
- Двойка, - спокойно говорит Шурик.
- Тут какая-то ошибка. Невозможно за такую работу получить двойку! – говорю, - Я знаю больше десятка других работ, и наша однозначно сильнее. Маразм какой-то. Надо пойти разобраться. Ты пробовал говорить с преподавателями?
- Пробовал.
- И что они сказали?
- Они отказались со мной говорить.
- То есть, как это, отказались? – у меня в голове как будто что-то лопнуло, и я отчетливо услышал легкий звон в ушах.
- Они отсылали меня друг к другу, переводя стрелки.
- Хуйня какая-то... Ну ладно, давай посмотрим дискету с демкой, и пойдем говорить. Здесь явно какое-то недоразумение. Интересно же, что там такое должно быть, чтобы получить двойку?

Я вставляю нашу демо-дискету, которую Шурик готовил в ночь перед сдачей. Я учавствовать в этом не мог – валился с ног с недосыпа. Но у нас действительно было много красивых тестов, так что не верил, что демку можно испортить.

Запускаю демку. И первое что вижу – абстракционистскую картинку с нахер отъехвашими цветами. Я молчу, и разглядываю эту картинку – ничего подобного в тестах не было никогда. Сказать, что ко мне закрались смутные сомнения о причинах нашей двойки – ничего не сказать.

Я молчу. И тут Шурик внезапно начинает объяснять.
- Понимаешь, - быстро говорит Шурик, - у нас бага, что когда пишешь картинку поверх уже существующей, то она палитру ставит в конец предыдущего файла.
- И как эта бага могла пройти через наши тесты? Ты то ее как умудрился не заметить, когда готовил демку?
- Понимаешь, я торопился, и проверял демку Сан-овским просмотрщиком картинок, и он показывает все правильно. А вот наш просмотрщик...

Я молча жамкаю на пробел, переключая картинку, и, к своему удивлению, виду вполне нормальный полированный мраморный шар, зависший над слегка зеркальной шахматной доской, покрашенной почему-то в красный и синий. Самое дебильное сочетание цветов. Но все равно – отлегло. И я начинаю жамкать дальше.

Когда я на третьей картинке подряд увидел ту же сцену, с небольшими изменениями – там доска повернута, тут свет другого цвета, я начал по-настоящему волноваться. И не зря – на всех картинках был все тот же шар над дебильной шахматной доской...

- Шурик, - говорю я аккуратно и вежливо, а внутри у меня уже давно все отмерло, - а какая разница между вот этой картинкой, и предыдущей?
И тут Шурик взрывается.
- Ты что – не видишь?!
- Честно – не вижу. Потому и спрашиваю.
- Посмотри, вот здесь шар - не совсем шар, а немного сплюснутый.
- О, йопт... – тоскливо отметил я.
- Я хотел показать все возможности нашего движка, что можно любые трансормации к объектам применять, и это очень легко.
- Да-а... А можно узнать, почему ты выбрал самое дебильное сочетание цветов – красный и синий? Черт... – хлопаю я себя по лбу, - Не, ну натурально – я идиот. Если до этого момента у меня были какие-то сомнения – то теперь я в этом уверен совершенно.
- С чего это вдруг? – с интересом посмотрел на меня Шурик.
- Да потому, что только законченный идиот на моем месте мог бы оставить тебя одного готовить картинки, зная, что ты дальтоник, и не различаешь цвета... Ты-то что мне об этом не напомнил, а?
- Да мне как-то в голову не пришло, что из-за этого могут быть проблемы, - пожимает плечами Шурик.
- Знаешь, Шурик, что я думаю? Вот – честно? Шикин, безусловно, конченный мудак. Но - теперь я вовсе не уверен, что такие долбоебы как мы реально достойны чего-то большего, чем двойки. И кстати, я как-то забыл спросить - а кто же занял наше первое место?

- О, ты сейчас будешь ржать, - весело улыбнулся Шурик, - ты сейчас под столом валяться будешь.
- Я не представляю, что ты можешь мне СЕЙЧАС сказать такого, чтобы я валялся под столом.
- Будешь. Спорим? Даю подсказку – это тоже трассировка лучей.
- Да ну, - говорю, - Этого не может быть. Никто кроме нас на курсе не взялся за полноценную трассировку, мне это точно известно. Не хочешь ли ты сказать...
- Макс – со своей простейшей трассировкой лучей трех цветных шариков, скачущих по кругу! В реальном времени!
- Макс?! Со своими шариками на ассемблере?!
- И он просил передать тебе следующее: «Влад, прости, я не хотел. Честно»
Я начал смеяться медленно, все громче и громче, сползая со стула. Ко мне присоединился Шурик. Мы хохотали долго. До слез.

***
Общежитие. Вечер после объявления результатов.

- Ну что Макс! Давай, теперь показывай эти призы с первого места! Интересно же!
- Да не, Влад. Призы полное говно. Тебе, честно, даже переживать не о чем.
- Макс, мы настолько смешно слили, что я ни о чем не переживаю. Я давно так не оттягивался. Но дай мне хоть на этот приз посмотреть-то!
- Влад. Приз – это альбом со стереоскопическими картинками, и набор фломастеров.
- Не может быть, - не поверил я, - там еще вроде работу обещали по профилю машинной графики?
- Кинули.
- Фломастеры… Альбом… Макс, да это же хамство! Это плевок в рожу! Лучше вообще никаких призов, чем такое!
- Вот, и я о том же, Влад. Только представь, как бы ты расстроился, получив этот приз! А так - видишь, как удачно получилось - ты не расстроился!
- Спасибо, дружище! - смеясь, трясу я ему руку, - Спасибо, сволочь! Он еще и подъебывает!
- Привет, парни! – забегает в комнату Шурик, - знаете что? Мне только что предложили работу в RedLab! Программистом, на заказные проекты! Будут платить зарплату, прикиньте?
- Охренеть, Шурик! Как тебе это удалось? – говорю.
- Да все из-за нашей программы.
- Та-ак! А ну-ка, давай рассказывай!
- Я свою часть работы вел на их рабочих станциях. Сотрудники RedLab видели наш прогресс, и болели за нас всей лабораторией. Они настолько впечатлены нашей работой, что взяли меня к себе! И, кстати, они тоже конкретно не поняли, почему Шикин впендюрил нам двойки. Они возмущены, и кроют его матом! И кроме того - мы все получили от них персональные приглашения на самую престижную кафедру - АСВК! Вне конкурса, парни!
- Вот ведь везучие засранцы! - восхитился Макс, - У вас, вопреки всему, получилось по своему выиграть этот дурацкий конкурс. Вы этого еще не поняли?
- Ага, свезло так свезло. Нам бы теперь еще что-нибудь придумать, чтобы из универа к ебеням не вылететь с этой двойкой, и будет вообще зашибись.

В комнату заходит Пашич.

- Ну что, Пашич? Че делать-то теперь будем, а?
- Как что? - удивляется Пашич, - Пойдем сдавать экзамен на моем потоке, конечно.
- Но мы ведь с другого потока?!
- Ну и что, - пожимает плечами Пашич, - С этим не должно быть никаких проблем!



ЗЫ: А теперь - считаем, сколько и каких ошибок в управлении проектами совершили герои данной истории :)


UPDATED: Поправлена концовка. Несколько небольших правок по тексту. В конец добавлен тематический мультик - "Пинки и Брейн". После прочтения - обязательно прослушайте вступительную песенку. Очень, очень тематическая. :)

Comments:


al_zatv at 2010-11-24 22:50 (UTC) (Link)
боевик:)
а я книжку читал Шикина и Борескова по 3д-графике. Главный букварь был, до изобретения 3д-ускорителей.
Gaperton
gaperton at 2010-11-25 10:11 (UTC) (Link)
Да-да, вот эти парни и футболили нас друг к другу. А лекции у них были прикольные. А на той, где Боресков рассказывал, как устроен Wolf3D, и Doom, с примерами кода на доске, - был вообще аншлаг. Весь курс собрался послушать.
фтыкачу
ftqkatel at 2010-11-24 23:00 (UTC) (Link)
32.03 КБ
4da
4da at 2010-11-24 23:06 (UTC) (Link)
Очень интересно!
Яков Сироткин
yakov_sirotkin at 2010-11-25 05:18 (UTC) (Link)
С точки зрения получения опыта проект был фееричеси успешен.
botya
botya at 2010-11-25 07:01 (UTC) (Link)
Супер!
Лучше так учиться делать проекты, чем на кафедрах "менеджмента". И Шурик молодец.
Gaperton
gaperton at 2010-11-25 08:46 (UTC) (Link)
Самое поразительное - в том, что двойки нам поставили исключительно за то, что мы делали проект втроем. И не предупредили преподавателя. Он, почему-то, страшно на такое обиделся.

Это мы выяснили через год, через общих знакомых.
philonet
philonet at 2010-11-25 08:18 (UTC) (Link)
Хм. 1) Видимо надо на ранней стадии согласовывать со всеми подход каждого к решению. 2) Кто решал интересную для себя задачу, тот её и решил. Но не общую задачу.
Alexey Fyodorov
23derevo at 2010-11-25 08:47 (UTC) (Link)
чьорт, я реально позавидовал сейчас героям истории))
Gaperton
gaperton at 2010-11-26 13:44 (UTC) (Link)
Что ж, значит, рассказ получился не так плох.

Ибо, можно взглянуть на это и с другой стороны - как большинство людей и смотрят на то, что происходит вокруг них. Произошла довольно заурядная история. Группа раздолбаев решила написать программу. Из-за полного отсутствия организованности и опыта, проебала не только то, что могла сделать - но фееричным образом даже то хорошее, что сделать все-таки смогла. При этом - конкурс - говно, и "жюри" - как-то по странному предвзято.

И все, собственно. Вопрос только в том, кому нах интересен и нужен такой взгляд на вещи? Не надо завидовать героям, лучше как следует оглядитесь вокруг. Рядом с вами все не менее удивительно и интересно. Я гарантирую это. :)
Антон
anv at 2010-11-25 08:50 (UTC) (Link)
> Приз – это альбом со стереоскопическими картинками, ...

Я годом позже сдавал программу для генерации таких картинок и тогда был сильно не уверен, что Шикин и Боресков в курсе вопроса :)
Goga_gansky
goga_gansky at 2010-11-25 10:50 (UTC) (Link)
В сабже, ясен пень, нихуя не понял, но пишешь ты пиздато :)))
Alexei V. Vasilyev aka Comm
sbase at 2010-11-25 11:44 (UTC) (Link)
Классный рассказ!

Типа ошибки:
1. Потеря контроля над проектом ключевыми участниками. Передача управления не заинтересованному участнику.
2. Не была исследована трудоемкость задачи до начала проектирования/макетирования.
3. Интеграция частей проекта отложена по последний день.
4. Раздельное владение информацией. В такой маленькой команде, все участники должны знать как сделаны все части проекта.
5. Финальное (приемочное) тестирование проводилось одним участником, хотя заинтересованы были все.
6. Разработка велась хаотично, без приблизительной оценки необходимого времени на разработку.
7. Руководитель по факту не руководил, то есть его роль закончилась на разбивке задач. Дальше он углубился в решение собственных проблем, а не задач проекта в целом.
Gaperton
gaperton at 2010-11-25 12:11 (UTC) (Link)
Абсолютно точно! :) Можно, впрочем, еще накопать. Но главное обозначено.
отражение жизни в экране монитора
rainman_rocks at 2010-11-25 14:01 (UTC) (Link)
Я, помнится, в школьные когды на турбо паскале серьёзно баловался уменьшением палитры.
Интуитивный алгоритм (чё-то типа - кластеризуем из расчёта 16 градаций на канал, считаем среднее по кластерам, потом последовательно сливаем наиболее близкие точки) работал весьма славно, так что большой проблемы я чё-то не вижу.
Gaperton
gaperton at 2010-11-25 14:36 (UTC) (Link)
Выраженная проблема с палитрой, когда алгоритм начинает иметь значение, возникает не так часто. Только на некоторых сценах, например - со слабыми источниками света, где есть градиенты по освещению. Но если уж она возникает - то выглядит так, что сушите весла. Кроме того, плохая палитра убивает к чертям антиалиасинг.

Есть методы назначения цветов из палитры точкам изображения, совмещенные с фильтрацией изображения, вроде "диффузии ошибки", которые позволяют на высоком разрешении сгладить кривую палитру, ценой повышенной зернистости изображения. Для изображений низких разрешений полагаться на диффузию - не лучший вариант. И с алиасингом в этом случае будет полная жопа.

Более того, можно так криво подобрать палитру, что "диффузию ошибки" заклинит. Это связано с тем, что смешение цветов подчинаются особому варианту алгебры, в котором базисных векторов для разложения в трехмерном пространстве должно быть не три, а четыре. То есть, смешивая четыре цвета, мы можем получить любой цвет внутри тетраэдра, вершины которого образуют эти точки.

Приличный алгоритм подбора палитры называется "квантизация Хекберта". В рамках данной работы был изобретен улучшенный вариант этого алгоритма (про Хекберта я тогда не знал), который выдавал на "плохих" сценах отличные результаты простым замещением ближайшего цвета, даже без включения "диффузии ошибки". То есть, он позволял убрать зернистость в том числе и на низких разрешениях.

Делалось это все не наугад, а как положено - свойства проблемы были изучены, рассмотрены разные варианты подходов к проблеме, и свойства выбранного алгоритма были доказаны. Настоящее исследование, по всем правилам.

Разумеется, будучи, скажем, на четвертом курсе - я бы решил эту задачу в лет. А на втором курсе - было интересно. Первое настоящее математическое исследование, все таки. Я конечно расстоился, что, как позже выяснилось, за 8 лет до меня Хекберт придумал похожую штуку (хоть и попроще), и что изобретенный мной матаппарат, оказывается, называется "выпуклый анализ" - но не сильно.
kasarino
kasarino at 2010-11-25 16:26 (UTC) (Link)
Спасибо, отличный рассказ! :)
Мы точно так же на военной кафедре писали программу по учету обмундирования. Один делал самый лучший интерфейс, другой - самую лучшую СУБД, третий - основную программу, которая все это связывала, четвертый писал хелп. В итоге в конце все это даже как-то работало :)
Еще вспомнилось, что вояки запретили использовать Windows (тогда был 3.1), программа должны была быть только под Дос.
А в соседней группе был дикий фанат Дельфи и хотел писать только на Дельфи. Написал. Его программка быстренько так ставила на дос минимальное ядро виндоуза 3.1, отрабатывала, в конце стирала виндовс :))
V
bangor_flying at 2010-11-30 03:11 (UTC) (Link)
Да, были еще самоделочные программы, которые включали в себя покоцанную винду 3.1, ограниченную под свои личне программные нужды. Видел такие обучалки на древних пиратских дисках
Dmitry Popov
thedeemon at 2010-12-03 17:13 (UTC) (Link)
Ха! Поностальгировал, спасибо!
Я на первом курсе с большим удовольствием ходил к Шикину с Боресковым на их спецкурс (в 99-2000-м). Там помимо крайне интересных рассказов про устройство дума и квейка еще были попытки совместно написать свой портальный движок. Правда, не шибко удачные, вроде.
А на втором курсе машграф у нас вел Баяковский. К тому времени уже делали лабы по OpenGL помимо всяких растровых алгоритмов. По квантованию цветов тоже задание было. А вот на другом потоке был аналогичный конкурс, помню мой друг рендерил полигональное море с кораблем. :)

А RedLab - это где Смелянский заправлял? В наше время она была знаменита тем, что студенты там горбатились допоздна, а все плюшки получал руководитель.
c0s
c0s at 2010-12-25 18:02 (UTC) (Link)
блин, это ж всё в прошлом веке было ... но ностальгиииия! :)
Previous Entry  Next Entry