Вывод пунктирных линий через полигоны
От: matvienko Украина http://www.aquapack.com/ http://www.PlainCAD.com/
Дата: 13.08.07 18:06
Оценка:
Добрый день.

Возникла задача рисовать пунктирные линии (прямые и кривые безье 3 порядка) произвольной толщины через залитые полигоны.
Подскажите в какую сторону "копать".

В идеале ищется библиотека которая может на основе описанного пути и шаблона выдать набор полигонов.
Хочется верить что есть такая, просто я не нашел
Но буду рад любым ссылкам на алгоритмы.

Поиск по русскоязычной части инета особого успеха не принес. На RSDN этот вопрос несколько раз встречался, но поверхностно (по крайней мере в тех темах что я нашел).

Использую OpenGL. С рисованием сплошных линий через полигоны вопросов не возникло.
Re: Вывод пунктирных линий через полигоны
От: korzh.pavel Россия  
Дата: 14.08.07 09:33
Оценка:
Здравствуйте, matvienko, Вы писали:

M>Добрый день.


M>Возникла задача рисовать пунктирные линии (прямые и кривые безье 3 порядка) произвольной толщины через залитые полигоны.

M>Подскажите в какую сторону "копать".

M>В идеале ищется библиотека которая может на основе описанного пути и шаблона выдать набор полигонов.

M>Хочется верить что есть такая, просто я не нашел
M>Но буду рад любым ссылкам на алгоритмы.

M>Поиск по русскоязычной части инета особого успеха не принес. На RSDN этот вопрос несколько раз встречался, но поверхностно (по крайней мере в тех темах что я нашел).


M>Использую OpenGL. С рисованием сплошных линий через полигоны вопросов не возникло.


antigrain.com
Re[2]: Вывод пунктирных линий через полигоны
От: Аноним  
Дата: 14.08.07 12:41
Оценка:
M>>Возникла задача рисовать пунктирные линии (прямые и кривые безье 3 порядка) произвольной толщины через залитые полигоны.
M>>Подскажите в какую сторону "копать".

M>>В идеале ищется библиотека которая может на основе описанного пути и шаблона выдать набор полигонов.

M>>Хочется верить что есть такая, просто я не нашел
M>>Но буду рад любым ссылкам на алгоритмы.

M>>Поиск по русскоязычной части инета особого успеха не принес. На RSDN этот вопрос несколько раз встречался, но поверхностно (по крайней мере в тех темах что я нашел).


M>>Использую OpenGL. С рисованием сплошных линий через полигоны вопросов не возникло.


KP>antigrain.com


Не подойдет. У меня вывод через OpenGL.
И там как я понял вывод линий через растеризацию, хотя может не туда смотрел...
Поправьте меня если не так...
Re[3]: Вывод пунктирных линий через полигоны
От: korzh.pavel Россия  
Дата: 14.08.07 12:50
Оценка:
Здравствуйте, Аноним, Вы писали:

KP>>antigrain.com


А>Не подойдет. У меня вывод через OpenGL.

А>И там как я понял вывод линий через растеризацию, хотя может не туда смотрел...
А>Поправьте меня если не так...

я имел ввиду что можно взять оттуда расчёт пунктира: http://vector-agg.cvs.sourceforge.net/vector-agg/agg-2.4/include/agg_vcgen_dash.h?view=markup
Re[3]: Вывод пунктирных линий через полигоны
От: korzh.pavel Россия  
Дата: 14.08.07 12:52
Оценка:
Здравствуйте, Аноним, Вы писали:


KP>>antigrain.com


А>Не подойдет. У меня вывод через OpenGL.


а glLineStipple пробовали?
Re[4]: Вывод пунктирных линий через полигоны
От: matvienko Украина http://www.aquapack.com/ http://www.PlainCAD.com/
Дата: 14.08.07 15:07
Оценка:
KP>>>antigrain.com
А>>Не подойдет. У меня вывод через OpenGL.
KP>а glLineStipple пробовали?


Там где надо — его использую
Но нужно именно через полигоны:
* во первых для возможности прорисовать с дисплейный список с возможностью последующего правильного масштабирования ширины линий при масштабировании всего списка при выводе
* на будущее иметь возможность создавать нестандартные линии (двойные, тройные, линии с маркерами вдоль пути)
* ну и для возможность рисовать линии произвольной толщины, не привязываясь к ограничениям реализации OpenGL, да и толстые линии прорисованные через полигоны лучше смотрятся, чем через растровые алгоритмы
Re[4]: Вывод пунктирных линий через полигоны
От: matvienko Украина http://www.aquapack.com/ http://www.PlainCAD.com/
Дата: 14.08.07 15:21
Оценка:
KP>>>antigrain.com

А>>Не подойдет. У меня вывод через OpenGL.

А>>И там как я понял вывод линий через растеризацию, хотя может не туда смотрел...
А>>Поправьте меня если не так...

KP>я имел ввиду что можно взять оттуда расчёт пунктира: http://vector-agg.cvs.sourceforge.net/vector-agg/agg-2.4/include/agg_vcgen_dash.h?view=markup


Спасибо! Сразу не понял...
Но надо сказать что с наскока разобраться в AGG и найти нужный код у меня наверное врядли получится...

Хотя сейчас дело с мертвой точки сдвинулось. Проблема была в попытке разбить кривую Безье на штрихи в лоб...
Сейчас пробую сначала представить ее в виде ломаной...
Re[5]: Вывод пунктирных линий через полигоны
От: korzh.pavel Россия  
Дата: 14.08.07 15:31
Оценка:
Здравствуйте, matvienko, Вы писали:

M>Хотя сейчас дело с мертвой точки сдвинулось. Проблема была в попытке разбить кривую Безье на штрихи в лоб...

M>Сейчас пробую сначала представить ее в виде ломаной...

У Максима, автора библиотеки, там есть такой код, а также статья на RSDN: http://www.rsdn.ru/article/multimedia/Bezier.xml
Автор(ы): Maxim Shemanarev
Дата: 07.10.2005
Рассказ об инженерном решении, комбинирующем несколько способов оценки ошибки при аппроксимации кривой Безье кусочно­линейным способом.
Re[6]: Вывод пунктирных линий через полигоны
От: matvienko Украина http://www.aquapack.com/ http://www.PlainCAD.com/
Дата: 15.08.07 00:04
Оценка:
M>>Хотя сейчас дело с мертвой точки сдвинулось. Проблема была в попытке разбить кривую Безье на штрихи в лоб...
M>>Сейчас пробую сначала представить ее в виде ломаной...

KP>У Максима, автора библиотеки, там есть такой код, а также статья на RSDN: http://www.rsdn.ru/article/multimedia/Bezier.xml
Автор(ы): Maxim Shemanarev
Дата: 07.10.2005
Рассказ об инженерном решении, комбинирующем несколько способов оценки ошибки при аппроксимации кривой Безье кусочно­линейным способом.


Да. За статью знаю — спасибо. Статья конечно отличная!
Я наверное немного неправильно выразился.... Конечно же при рисовании сплошной кривой Безье я использую рекурсивный алгоритм деления кривой пополам. Просто и пунктирную кривую я пытался рисовать прям в этом методе.
Потом понял, что проще сначала в промежуточный массив представить кривую как набор ломанных, а уже после вывести их с учетом пунктира.

Хотя конечно жаль, что нет готовой библиотеки, желательно под OpenGL, которая позволила бы не изобретать велосипед...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.