формат векторной графики
Там смотри "Квадратичные кривые", именно их рисует данный алгоритм.Albom wrote:http://ru.wikipedia.org/wiki/Кривая_Безье
и всего делов:Asper wrote:Для построения дуги нужны тригонометрические функции....Code: Select all
x = R * cos(A) + X y = R * sin(A) + Y
Code: Select all
fld [A]
FSINCOS
fld [R]
fmul st1, st0
fmulp st2, st0
fadd [X0]
fistp [x]
fadd [Y0]
fistp [y]
Евангелие от Иоанна: стих 1[/size]
Code: Select all
; В начале было Слово:
B32: mov ax, os_stack ; Selector for os
art_zh
Хорошо. Выбор за Gluk'ом.
Хорошо. Выбор за Gluk'ом.
Asper, просто бывают такие дуги (и не то чтобы очень редко встречаются), что почти окружности, и тогда вместо восьми кривых Безье в файле достаточно будет описать одну лишь дугу. При этом для дуги нужно указать не больше данных, чем для одной кривой Безье. Да даже пусть при отрисовке дуга превращается в кривые, и рисуется как кривые, но в файле, думаю, выгоднее описать именно дугу
я тут еще подумал, не нужны отдельно контурные объекты. Нужно два объекта:
-замкнутый объект произвольной формы
-разомкнутый объект произвольной формы
, у которых в параметрах будет находиться строка, описывающая их форму. При этом все размеры формы можно отсчитывать в относительных координатах (от положения объекта), чем экономить. Для задания формы - строка, имеющая похожий на общий формат. А форму как раз описывают контурные (и только контурные) объекты, перечисленные выше.
Отдельно замкнутые и незамкнутые - чтобы не тратить биты на указание цвета фона, который не нужен для разомкнутых объектов, ну и для замкнутых можно у последнего контурного элемента не указывать последнюю координату - она будет равна начальной для контура. А это уже не один бит, а как минимум восемь (как максимум - неограниченно, мало ли насколько велико поле для рисования)
-замкнутый объект произвольной формы
-разомкнутый объект произвольной формы
, у которых в параметрах будет находиться строка, описывающая их форму. При этом все размеры формы можно отсчитывать в относительных координатах (от положения объекта), чем экономить. Для задания формы - строка, имеющая похожий на общий формат. А форму как раз описывают контурные (и только контурные) объекты, перечисленные выше.
Отдельно замкнутые и незамкнутые - чтобы не тратить биты на указание цвета фона, который не нужен для разомкнутых объектов, ну и для замкнутых можно у последнего контурного элемента не указывать последнюю координату - она будет равна начальной для контура. А это уже не один бит, а как минимум восемь (как максимум - неограниченно, мало ли насколько велико поле для рисования)
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
В обычных векторных пакетах у объекта есть флаг замкнутости. А для заливки есть указания её типа - сплошная, градиентная, ещё какая-то и отсутствие заливки. Для разомкнутого объекта с сохранённой заливкой она помнится, но не рисуется, а уже при их замыкании рисуется. В некоторых пакетах есть опция заливать-не заливать разомкнутые объекты, т.е. есть цвет - заливаем, при этом при наличии обводки замыкающий отрезок не прорисовывается (имхо неудобно, я эту опцию отключаю).
lev, при чем здесь векторные пакеты вообще? В них работа организовывается обычно независимо от формата выходного файла, а уже при экспорте/сохранении внутренний формат перестраивается в выходной. Главное, чтобы последний имел максимум возможностей первого
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Чтобы не изобретать всё заново, чтобы получить схожий функционал и облегчить конверсию в существующие форматы (совместимость), если в будущем захочется.при чем здесь векторные пакеты
Понял что имелось ввиду, что для незамкнутых объектов не сохраняются данные о цвете заливки, мол может быть, когда-нибудь, кто-нибудь будет редактировать этот документ, и, может быть, захочет, замкнуть объект и раскрасить его, а данных о цвете нет.
Ну что тут можно сказать, а вдруг кто-то из квадрата захочет эллипс сделать? А данных о радиусах нет(
Вы знаете алгоритмы заливки разомкнутых областей? Лично я - нет. Залить можно замкнутый объект, у которого одна из границ невидима, так это и BFG(VS) будет позволять.
Ну что тут можно сказать, а вдруг кто-то из квадрата захочет эллипс сделать? А данных о радиусах нет(
Вы знаете алгоритмы заливки разомкнутых областей? Лично я - нет. Залить можно замкнутый объект, у которого одна из границ невидима, так это и BFG(VS) будет позволять.
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Тот же самый, что и для замкнутых. Контур автоматически замыкается отрезком и заливается фоном. Обводка отрисовывается, но не замыкается. Программа при этом продолжает считать объект незамкнутым. (Это мы наделяем слова смыслом). В программе задаётся опция - Заливать-не заливать открытые кривые.Вы знаете алгоритмы заливки разомкнутых областей? Лично я - нет.
На скриншоте пример кривой и кусочек интерфейса CorelDRAW 9.
- Attachments
-
-
fillopen.gif (7.24 KiB)Viewed 6946 times
-
lev, спвсибо за иллюстрацию того текста, который шел сразу за процитированным
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
в общем, если больше возражений нет, берем пока в мейнстрим.. Дальше надо выделить какие-либо папаметры, которые будут общими для некоторых групп думаю, стоит начать с объектов, во-первых, графических, во-вторых, замкнутых (соответственно, имеющих площадь).
Примерно такие:
-цвет заливки
-текстура заливки
-цвет обводки
-толщина обводки
-кисть обводки
соответственно, для безплощадных объектов это пусть будут:
-цвет линии
-толщина линии
-кисть линии
, также последние параметры участвуют в описании границ объектов произвольной формы, то есть это все для них можно переобозначать.
кто что может добавить на данном этапе?
Примерно такие:
-цвет заливки
-текстура заливки
-цвет обводки
-толщина обводки
-кисть обводки
соответственно, для безплощадных объектов это пусть будут:
-цвет линии
-толщина линии
-кисть линии
, также последние параметры участвуют в описании границ объектов произвольной формы, то есть это все для них можно переобозначать.
кто что может добавить на данном этапе?
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Немного отойду от темы...
У меня имеется множество векторных шрифтов в формате SVG. Например, буква n:
Можно ли будет из такого формата перевести шрифты в новый?
[offtop]Пошел искать описания путей в SVG[/offtop]
У меня имеется множество векторных шрифтов в формате SVG. Например, буква n:
Code: Select all
<path
d="M 135,0 V 1062 H 297 V 911 q 117,175 338,175 96,0 176,-34 80,-34 121,-91 41,-57 56,-133 10,-50 10,-175 V 0 H 818 v 646 q 0,110 -21,164 -21,54 -74,87 -53,33 -126,33 -115,0 -198,-73 -83,-73 -84,-277 V 0 H 135 z"
style="fill:#000000;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
[offtop]Пошел искать описания путей в SVG[/offtop]
Хм, да тут все просто оказывается... *Пошел выкуривать мануалы*
Тут все подробно: http://www.w3.org/TR/SVG11/paths#PathDa ... nformation
Тут все подробно: http://www.w3.org/TR/SVG11/paths#PathDa ... nformation
Who is online
Users browsing this forum: No registered users and 51 guests