формат векторной графики

Applications development, KoOS API questions
  • Там смотри "Квадратичные кривые", именно их рисует данный алгоритм.
  • 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

    Code: Select all

    ; В начале было Слово:
    B32:        mov     ax, os_stack       ; Selector for os
    [/size]
  • art_zh
    Хорошо. Выбор за Gluk'ом.
  • Asper, просто бывают такие дуги (и не то чтобы очень редко встречаются), что почти окружности, и тогда вместо восьми кривых Безье в файле достаточно будет описать одну лишь дугу. При этом для дуги нужно указать не больше данных, чем для одной кривой Безье. Да даже пусть при отрисовке дуга превращается в кривые, и рисуется как кривые, но в файле, думаю, выгоднее описать именно дугу
  • я тут еще подумал, не нужны отдельно контурные объекты. Нужно два объекта:
    -замкнутый объект произвольной формы
    -разомкнутый объект произвольной формы
    , у которых в параметрах будет находиться строка, описывающая их форму. При этом все размеры формы можно отсчитывать в относительных координатах (от положения объекта), чем экономить. Для задания формы - строка, имеющая похожий на общий формат. А форму как раз описывают контурные (и только контурные) объекты, перечисленные выше.
    Отдельно замкнутые и незамкнутые - чтобы не тратить биты на указание цвета фона, который не нужен для разомкнутых объектов, ну и для замкнутых можно у последнего контурного элемента не указывать последнюю координату - она будет равна начальной для контура. А это уже не один бит, а как минимум восемь (как максимум - неограниченно, мало ли насколько велико поле для рисования)
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • В обычных векторных пакетах у объекта есть флаг замкнутости. А для заливки есть указания её типа - сплошная, градиентная, ещё какая-то и отсутствие заливки. Для разомкнутого объекта с сохранённой заливкой она помнится, но не рисуется, а уже при их замыкании рисуется. В некоторых пакетах есть опция заливать-не заливать разомкнутые объекты, т.е. есть цвет - заливаем, при этом при наличии обводки замыкающий отрезок не прорисовывается (имхо неудобно, я эту опцию отключаю).
  • lev, при чем здесь векторные пакеты вообще? В них работа организовывается обычно независимо от формата выходного файла, а уже при экспорте/сохранении внутренний формат перестраивается в выходной. Главное, чтобы последний имел максимум возможностей первого
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • при чем здесь векторные пакеты
    Чтобы не изобретать всё заново, чтобы получить схожий функционал и облегчить конверсию в существующие форматы (совместимость), если в будущем захочется.
  • Понял что имелось ввиду, что для незамкнутых объектов не сохраняются данные о цвете заливки, мол может быть, когда-нибудь, кто-нибудь будет редактировать этот документ, и, может быть, захочет, замкнуть объект и раскрасить его, а данных о цвете нет.
    Ну что тут можно сказать, а вдруг кто-то из квадрата захочет эллипс сделать? А данных о радиусах нет(
    Вы знаете алгоритмы заливки разомкнутых областей? Лично я - нет. Залить можно замкнутый объект, у которого одна из границ невидима, так это и BFG(VS) будет позволять.
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Вы знаете алгоритмы заливки разомкнутых областей? Лично я - нет.
    Тот же самый, что и для замкнутых. Контур автоматически замыкается отрезком и заливается фоном. Обводка отрисовывается, но не замыкается. Программа при этом продолжает считать объект незамкнутым. (Это мы наделяем слова смыслом). В программе задаётся опция - Заливать-не заливать открытые кривые.
    На скриншоте пример кривой и кусочек интерфейса CorelDRAW 9.
    Attachments
    fillopen.gif
    fillopen.gif (7.24 KiB)
    Viewed 6946 times
  • lev, спвсибо за иллюстрацию того текста, который шел сразу за процитированным
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • в общем, если больше возражений нет, берем пока в мейнстрим.. Дальше надо выделить какие-либо папаметры, которые будут общими для некоторых групп думаю, стоит начать с объектов, во-первых, графических, во-вторых, замкнутых (соответственно, имеющих площадь).
    Примерно такие:
    -цвет заливки
    -текстура заливки
    -цвет обводки
    -толщина обводки
    -кисть обводки

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

    кто что может добавить на данном этапе?
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Немного отойду от темы...
    У меня имеется множество векторных шрифтов в формате 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
  • Who is online

    Users browsing this forum: No registered users and 51 guests