Посоветуйте книги по графике...

Тема в разделе "WASM.BOOKS и WASM.BLOGS", создана пользователем _Serega_, 5 янв 2007.

  1. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    Собсно должон быть описан сабж по следующим вопросам:
    - Пропорции, размеры ...
    - Шрифты ...
    - Клиппинг ...
    - ХитТестинг ...
    - Масштабирование ...
    - Определение неактуальности данных (например в ArchiCad текст красиво заменяется на квадратики когда маленький) ...
    - Репаинтинг ...
    - Оптимизации ...
    - обзор фич ориентированных на увеличение юзабилити ...
    - и всякие траблы ориентированные на АПИ от Вин32.

    Интересует только самый общий Дзен по этим вопросам.

    Сенкс всем откликнувшимся.
     
  2. Asvald

    Asvald New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2006
    Сообщения:
    58
    Вот посмотри книгу, может что и найдешь в ней, правда весит она многовато http://www.byte.com/abrash/
    Это не варез.

    Оттуда же краткое описание:
    Michael Abrash's classic Graphics Programming Black Book is a compilation of Michael's writings on assembly language and graphics programming (including from his "Graphics Programming" column in Dr. Dobb's Journal). Much of the focus of this book is on profiling and code testing, as well as performance optimization. It also explores much of the technology behind the Doom and Quake 3-D games, and 3-D graphics problems such as texture mapping, hidden surface removal, and the like.
     
  3. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Asvald
    Судя по перечню. Ему книжка не по графике нужна, а по Win API. Все описанно в MSDN но как видно английский не катит.
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    "Программирование графики в среде Windows" не подойдёт?
     
  5. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    Asvald
    Спасибо, скачаю посмотрю.

    Pavia
    All
    Видимо никто не сталкивался с сабжем, поэтому объясняю траблы:
    1. Пропорции, размеры (Берем кой-нить старый CAD, рисуем квадрат, а в нем вписуем круг и плавно масштабируем, эффекты самые разнообразные: то круг выходит за границы, то не доходит, расширение квадрата происходит не одновременно с двух сторон и др. А еще есть ограничения у DP и LP функций. Сюда же борьба с ошибками округления)
    2. Клиппинг (Обчитавшиеся Петзольда рисуют все и говорят мол винда обрубит ненужное :), представляю если бы SolidWorks так работала: миллиончик деталей на каждую, по два десятка АПИ функций :) комменты думаю излишни)
    3. ХитТестинг (Причем тут МСДН вообще не пойму, чисто алгоритмическая вещь, многие любители используют "трафарет", хотелось бы узнать об альтернативах )
    4. Масштабирование (Учитывая скока есть разных трансформаций, по разным осям и ограничения функции SetWorldTransform, + реализация FishEye вопрос перестает быть тривиальным)
    5. Определение неактуальности данных (Все CADы делают это на вид очень похоже "значит передрали откуда-то" и опять же уйма вопросов: когда круг превращается в точку, когда текст в прямоугольник и когда специфическая заливка должна становиться сплошной ну и др...)
    6. Репаинтинг (Когда полная перерисовка экрана занимает 2-3 секунды, а при частичной почему-то не сходятся линии, когда линии накладываются, почему-то остаются артефакты на экране а ВМ_ПАИНТ не приходит ... и :) самое забавное было в кой-то версии ArchiCadа там если во время перерисовки войти в меню камп входит в транс.)
    7. обзор фич ориентированных на увеличение юзабилити (Ну это по части UI , просто интересно почитать, FishEye например)

    IceStudent
    Подойдет все, что описывает данные и похожие траблы.
     
  6. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    _Serega_
    А GDI+ в msdn смотрел?
    Там много чего интересного и работа через плавающую точку, так что ошибки округления минимальны.
     
  7. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    Y_Mur
    Смотрел.

    Но не в msdn дело и не в ошибках округления.

    Я привел только то, с чем сталкивался и замечал сам. За время существования отрасли было написаной уйма софта, поэтому кодеры должны были сталкиваться с куда более существенными проблемами. Следовательно должна быть хорошая фундаментальная литература по сабжу.

    И второе, хотелось бы абстрагироваться от механизма вывода (в разумных рамках), а то выйдет GDI+++ и прийдется переписывать все :).
     
  8. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Боюсь придётся собирать инфу мелкими кусочками :dntknw:, хотя если раскопаешь - поделись - сабж интересный ;)
     
  9. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    _Serega_
    1. Ничего не могу сказать.
    2. Отсечение- расписано в литературе. И статей полно.
    3. Вижу слово в первые, надо будет поискать.
    4. Это правильнее назвать трансформацией. На сколько я понимаю это так же называется ресамплинг.
    Но тут пару стандартных алгоритмов. Плюс сверху фильтрация линейная, сплайнами и тд.
    5. Если не видно то и заменяем. Чего тут не понятного. Не думаю, что кто-то будет такую мелочь описывать в книжках.
    6. А чего тут два режима. Полная перерисовка и частичная. Если ошибок нет то частичной должно хватать. А полная нужна чтобы ошибки(артефакты) устранить.

    А так в статей можно нарыть много.
     
  10. Chib777

    Chib777 Александр

    Публикаций:
    0
    Регистрация:
    22 сен 2003
    Сообщения:
    82
    Адрес:
    Ukraine, Odessa
    Посмотри "програмирование графики для Windows", автор Фень Юань
     
  11. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев
    _Serega_
    так тебе векторная графика нужна - берешь учебники по геометрии и начертательной геометрии, дальше изучаешь что такое кривые Безье и антиалиасинг, таки берешь МСДН и соединяешь все это. Мож, правда, и есть книги по всему этому, но я не встречал, правда и не искал.
     
  12. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    masquer
    Нет, это я могу из либ передрать, благо много всяких. В #5 обратил внимание на функцию SetWorldTransform именно потому, что она, например, не работает с битмапами :dntknw:.

    Интрересует например прикладные вопросы:
    - 1000 линий в куче, на экране туда кликнул пользователь, куда попал?
    - 10000000000 линий характеризует то, маленький кусок чего мы видим на DC, как эффективно отбросить ненужное и не выводить (пример реализации, как подсказали, есть тута, через кие-то хитрые деревья: http://www.byte.com/abrash/ буду вникать).
    - пользователь кликнул на части рисунка к-я оказалась битмапом(объектом) и потащил куда ему вздумалось... Как красиво, плавно, эффективно (затирания всякие) реализовать Драг, привязку к другим объектам и пр.

    и пр. пр. пр. вопросы на которые МСДН никак не ответит. Наиболее точной книгой, по аналогии с прочитанными, была бы книжка типа такой: Э. Таненбаум "Современные графические приложения" :))))

    Chib777
    Посмотрю, сенкс, уже качается. Много раз на этого Феню встречал ссылок, но не обращал внимания.

    Pavia
    Ничего по делу... На словах я и сам объясню кому угодно, что вся наука - "лапша на постном масле".

    А изучать методом втыка - не хочу даже браться. В свое время с DebugActiveProcess() намучился, оказалось эта функция писалась пьяными китаёзами в предновогоднюю ночь, и лучше ее вообще не использовать :).

    ЗЫ: Больше так не отвечай.
     
  13. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев
    когда перейдешь от теории к реализации - ответит :)
     
  14. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев
    а что тут думать? каждая линия описывается какой-то формулой и кроме этого имеет толщина, теперь берешь координаты точки, куда кликнули и начинаешь перебирать линии (ну точнее прямоугольники наклоненные - толщина нам нужна), для оптимизации можно экран на части разделить, например. Это то, что в голову пришло ничего не читая, осталось вспомнить школьный курс геометрии класса 7-8го и все. Аналогичные рассуждения и для всех остальных твоих вопросов. Я б и без книг написал бы, при том что особо этим не интересуюсь :)
     
  15. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Я на эту тему тоже на досуге медитирую :)
    Собираюсь попробовать такой вариант:
    Создать список графических объектов (соответствие номер объекта - handle)
    Cоздать дополнительный контекст дисплея с таким же разрешением и глубиной цвета = размерности списка (есно округлённой вверх до byte, word, dword)
    После отрисовки основного контекста (это задача приоритетная) в фоновом режиме рисовать то же самое в дополнительном контексте, в качестве цвета используя номер объекта (можно и сам Handel, но тогда сложнее вводить вспомогательные объекты типа невидимых узлов, а также можно память сэкономить при коротком списке объектов ;)
    Теперь когда юзер кликнул мышью - подождать завершения фоновой отрисовки (благо часто мышью всё равно не покликаешь :), прочитать соответствующий пиксел и взять из списка нужный Hadle линии, окружности и т.п.
     
  16. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    masquer
    Проблема зачастую на в линиях. Линии например, могут характеризовать объект который может (и очень вероятно будет) еще и заслоняться другим. А как этот объект лучше представить? Вот например вопрос.
     
  17. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    Все с вами понятно, умники :)
    хотя, наверно, и сам такой :)

    ОФИЦИАЛЬНОЕ ЗАЯВЛЕНИЕ:)

    Я, нижеподписавишийся, под ником _Serega_, привожу к сведению, ALL кроме Y_Mur:), что юридически и практически зачимыми отверами в этом топике, являются ответы, содержащие ссылки на литературу и статьи, все остальные будут рассматриваться как автором топика как флуд и неуважение к автору топика. :)

    23.40 (+2) zulu time 06.01.2007. _Serega_

    ЗЫ: Y_Mur можно помедитировать вместе на досуге в аське. Свой номер брошу в личку.
     
  18. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    _Serega_
    Зачем методом тыка. Есть куча статей, вот и ищи то что тебе нужно
    Вот к примеру, статьи как раз научные:
    http://library.graphicon.ru/catalog
    Помойму я нигде не встричал как написать векторый редактор.

    То, что ты хочешь, для меня интерес не представляет. Так как знаний достаточно, толи из других областей набрался, толи статей начитался.
    В том то вся и суть что тут и говорить не о чем. Разве только что такое матрица. Как декартовы координаты перевести в полярные координаты.
    Или применения деревьев для отсечения большинства объектов при обрисовке.
    ХитТестинг - тестинг показов? Или ты имел ввиду проверку щелчка мыши на поподание на объект - тут тоже все просто.
     
  19. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Pavia
    Сразу видно, что реально сабжем не занимался.
    А не слабо решить банальную задачку:
    Дано: векторный круг (заливка без контура) произвольного масштаба и положения относительно экрана.
    Сделать: алгоритм отрисовки с минимальными накладными расходами на проверку попадания в экран.
    Прим: Не обязатльно асм код с низкоуровневой оптимизацией (это отдельный танец с бубном), достаточно общего хода мысли как в #15.

    Суть в том что готовых (в том числе и библиотечных) решений задачи предостаточно, но все виденные мною, либо кривые, либо тормозные, либо и то и другое вместе взятое :dntknw:
    А книг по сабжу нет имхо потому, что никто всерьёз оптимизацией таких алгоритмов не занимался, все лепят опираясь на школьный учебник геометрии, а что прога томозная выходит, так пусть купит юзер Пентиум ХХХ с n+1 ядрами и возрадуется...

    ЗЫ: а за ссылочку спасибо - любопытная ;)
     
  20. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев
    Y_Mur
    а что тут делать? отдельно храним инфу об объекте в которой будет указан центр окружности, ее радиус и толщина, проверить на вхождение точки внутрь окружности - 5 минут работы даже с оптимизацией небольшой (типа быстро проверить входит ли точка в прямоугольник, в который вписана окружность и прямоугольник, который вписан в эту окружность). Или в чем именно сложность?