Форум: "Media";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизКак нанести условн.знаки на полигон?Векторная карта на DC, ... Найти похожие ветки
← →
Petro (2004-02-16 10:43) [0]Как нанести условные знаки на полигон?, Векторная карта на DC, есть полилиния..
================================
Надо, к примеру, вместо полилинии нарисовать железную дорогу.
- Может копировать растровый кусок? Но как скорость и что делать на углах линии.
- Может сделать через регионы и заливки?
- Может мдти по линии и рисовать векторную связку простых объектов (шпала, рельс,...)?
Всего 3-4 тысячи точек в линии и 2-4 тысячи линий.
При простой Win32 API полилинии сейчас рисуется окно ~4 секунды.
← →
CyberStorm (2004-02-16 14:21) [1]Тебе поможет LineDDA - CallBack функция рисования линии в GDI.
Вызывается при каждой отрисовке точек линии, вместо точек можно выводить все что угодно в переданных GDI координатах
← →
Petro (2004-02-16 15:21) [2]Да, я писал что-то подобное, когда нужно было "по пути" между точкой А и Б проверять цвет подложки - растра.
Т.е. Вы предлагаете её использовать
- Есть битмап-кусок железной дороги длиной L=15пикс.
- Поочерёдно на каждой точке вызывается LIne... и при удалённости от старта кратно L рисуем кусок дороги. Угол поворота у нас есть Pnt1 и Pnt2.
- При совпадении координат с концом линии делаем обрезку лишнего куска. Правда как эффективно обрезать - по перпендикуляру определяем габарит куска полилинии?
======
Или второй вариант то-же, но рисуем векторные шпалы-прямоугольники с заливкой?
← →
Petro (2004-01-23 13:35) [3]ММда. Не так просто решается задачка.
При алгоритме состоавления полилинии из кусков растровых не выходит "ровно без стыков их уложить". При подстановке 360 градусов- вариантов картинок вероятно получается + - 1-2 градуса расхождение и куски ложаться на отрезок не ровно.
Т.к. длина куска равна 40 пикселей, то на этом расстоянии из-за растрирования всегда будет ошибка определения направления в градусах на 1-3 градуса. Что даёт больщую ступенчатость при укладке.
Кроме того, например при шаблоне - через каждые 5 пикселей - зазубрины должны учитывать - где "ложили зазубрину". На предыдущем отрезке полилинии. Не очень получается просто визуализировать полилинию методом растров а не векторных рисунков.
========================
Попутный вопрос - Кто знает где найти алгоритмы отсечения отрезков по экрану?
В GDI+ нет случайно?
Очень мало библиотек именно по векторам и векторному рисованию :((.
← →
CyberStorm (2004-02-25 20:27) [4]Угу, очень мало, потому что это достаточно сложная задача - создание качественного векторного редактора
Скоро начну заниматься тем же что и вы - созданием стилевых линий, есть один интересный вариант с использованием Path в GDI - например пакет COREL как раз похоже использует траектории при построении линий
← →
Petro (2004-02-26 11:19) [5]CyberStorm!
Будет какая инфа, ты уж черкни пару строк kpetro_собака_mail.ru.
Я думаю за неделю сделаю комбинированный вариант. Стиль состоящий как из вектора, так и из растровых маленьких вставок в линию - регулярных элементов.
LineDDA что предложил ты и используется в векторном редакторе (мне он нравится) CADSyS4. Он есть у меня с исходниками. Работает довольно быстро, но я добавлю в него в DDA отрисовку растровых вставок. Например у железной дороги это шпалы. Для регулярных элементов не соединённых между собой это подходит. А сами рельсы рисовать буду вектором (без ступенек получается) и дважды (есть функция, которая строит полигон вокруг полилинии).
Пользователь может составить линию какую захочет.
Есть обрезка линий окном, но надо перевести с С++ (уйдёт какое-то время). И теория и алгоритмы на сайте Algo. Надо будет вышлю.
===============
Ещё есть мнение Сишников, что в DirectDraw это делать быстрее, т.к. он работает быстрее GDI. Вот вопрос? Я думал. что DirX это просто обёртка вокруг GDI.
===================
Будут примеры Delphi и C++ про Path плиз.
Петро.
← →
CyberStorm (2004-02-26 19:18) [6]ОК, сейчас сам разбираюсь, если что получится сообщу
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c