3.3 Vektorové formáty

Formátů pro ukládání vektorového obrazu existuje celá řada (řádově stovky). Narozdíl od rastrů zde neexistuje téměř žádný dominantní formát - až na SVG a WMF. Následující přehled je tedy jen krátkou a neúplnou exkursí do světa vektorových formátů.

Úvod

Formát WMF (Windows Meta File) je formát, ve kterém je ukládána většina vektorové grafiky v prostředí M$ Windows. Je to formát uzavřený, nicméně v současné době celkem dobře dokumentovaný. Formát WMF umí načíst většina programů pro zpracování vektorové grafiky. Občas se při načtení mohou vyskytnout některé chyby (barvy, fonty, seskupení nebo pořadí).

×ÍĆ�ë|}L@8Ç_	8g&
" WMFC�# ¨w¨��
ŞÚě|}L EMF¨�
°
l@đ
�DiaDiagram
ë|}L% 
�'­Řć% %
�+�Şă% 
�% �( &
% +�
Şă% �( '
˙˙˙% % �+
çÂ% �%
�( &
% +çÂ

Z ukázky obsahu souboru je patrné, že se jedná o binární formát, který je bez znalosti struktury a bez použití programovacích technik pro uživatele nečitelný.

WMF

Jednou z významných aplikací jazyka XML je specifikace otevřeného vektorového formátu nazvaného SVG (Scalable Vector Graphics). Pro tento grafický formát je charakteristické využití standardních externích DTD jazyka XML, které jsou spravovány organizací W3C.

Formát SVG umožňuje definovat základní geometrické objekty jako je bod, linie, polygon, elipsa. Umožňuje definovat další parametry jako je maskování, filtrace a je možné definovat i interaktivitu objektů na základě činnosti uživatele (např. kliknutí myší).

Protože se jedná o otevřený formát, může jej vytvářet kdokoli se znalostí jazyka XML. Některé aplikace (obvykle pro práci s vektorovou grafikou - např. Corel Draw) umožňují export do formátu SVG.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
id="svg1"
sodipodi:version="0.32"
inkscape:version="0.39"
width="210mm"
height="297mm"
sodipodi:docbase="/data/Dokumenty/Institut/Loga"
sodipodi:docname="logogisacekvCB.svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:cc="http://web.resource.org/cc/"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs
id="defs3" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.6769064"
inkscape:cx="297.88117"
inkscape:cy="662.56081"
inkscape:window-width="1024"
inkscape:window-height="790"
inkscape:window-x="154"
inkscape:window-y="61" />
<metadata
id="metadata4">
<rdf:RDF
id="RDF5">
<cc:Work
rdf:about=""
id="Work6">
<dc:format
id="format7">image/svg+xml</dc:format>
<dc:type
id="type9"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;
stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;
stroke-opacity:1.0000000;"
id="path10254"
sodipodi:cx="580.14545"
sodipodi:cy="344.09528"
sodipodi:rx="346.93561"
sodipodi:ry="166.98976"
d="M 927.08105 344.09528 A 346.93561 166.98976
0 1 0 233.20984,344.09528 A 346.93561 166.98976 0 1 0 927.08105 344.09528 z"
transform="matrix(0.704848,-2.159319e-3,0.000000,1.002231,-48.59601,-118.2049)" />
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;
stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;
stroke-opacity:1.0000000;"
id="path10253"
sodipodi:cx="580.14545"
sodipodi:cy="344.09528"
sodipodi:rx="346.93561"
sodipodi:ry="166.98976"
d="M 927.08105 344.09528 A 346.93561 166.98976 0 1 0
233.20984,344.09528 A 346.93561 166.98976 0 1 0 927.08105 344.09528 z"
transform="matrix(0.871789,-2.159319e-3,0.000000,1.002231,-141.4606,-117.2027)" />
<rect
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;
stroke-width:0.97241764pt;stroke-linecap:butt;stroke-linejoin:miter;
stroke-opacity:1.0000000;"
id="rect10876"
width="363.24838"
height="398.37518"
x="351.90225"
y="24.973564" />
</svg>

Z ukázky obsahu souboru je patrné, že se jedná o textový formát, který je i bez znalosti struktury a bez použití programovacích technik pro uživatele čitelný.

SVG

Formát CDR je velmi známý v oblasti DTP (zpracování pro tisk). Umí zaznamenat vektorová i rastrová data. Jedná se o uzavřený formát, který je navíc velmi špatně dokumentován, proto jej nedoporučuji používat. Formát je výstupem programu Corel Draw.

RIFFCDR5vrsnőDISPl (��
 ŻŻ��
����������ŔŔŔ˙˙˙˙˙˙
˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙

Z ukázky obsahu souboru je patrné, že se jedná o binární formát, který je bez znalosti struktury a bez použití programovacích technik pro uživatele nečitelný.

CDR

Virtual reality modeling language (VRML) je jazyk umožňující definovat 3D scény. Tento jazyk je otevřený, dokumentovaný a poskytuje nástroj pro prezentaci 3D objektů a scén v prostředí WWW.

V současné době není bohužel přímo podporován žádným z prohlížečů. K prohlížení je nutné instalovat Plug-in (např. Cosmo Player nebo od SGI).

K dispozici pro tvorbu VRML scén je možné využít buď libovolný textový editor nebo některý z nástrojů, které jsou však obvykle licencovány (za poplatek -- např. Cosmo Software, 3D studio).

VRML umožňuje definovat prvky modelu jako jsou: koule, válce, kužely, kvádry, libovolné 3D objekty definované lomovými body, gridy (úspora kódu). Kromě jednoduchých objektů umožňuje jednoduché objekty kombinovat do komplexních objektů. Rovněž je možné definovat vzhled objektů (barva, textura) a k objektům připojovat externí URL odkazy.

K dalším možnostem patří vkládání zvuků, umisťování videa, popisků. V neposlední řadě je k dispozici možnost skriptování, vytváření animací.

#VRML V2.0 utf8

WorldInfo {title "Model vygenerovany programem VRMLGen" }
NavigationInfo { headlight FALSE
type [ "FLY" , "ANY" ] }

Viewpoint {
description "Shora"
position 23 38.97057 35.7294
orientation 1 0 0 -0.8 }

Viewpoint {
description "Dvere"
position 8 11 10
orientation 1 0 0 0.0 }


SpotLight { direction 0 -1 0 intensity 0.1 ambientIntensity 0.1
location 23 38.97057 35.7294}

DirectionalLight { direction 0 1 0 intensity 0.4 ambientIntensity 0.3 }
DirectionalLight { direction 0 -1 0 intensity 0.4 ambientIntensity 0.3 }
DirectionalLight { direction 1 0 0 intensity 0.4 ambientIntensity 0.3 }
DirectionalLight { direction -1 0 0 intensity 0.4 ambientIntensity 0.3 }
DirectionalLight { direction 0 0 1 intensity 0.4 ambientIntensity 0.3 }
DirectionalLight { direction 0 0 -1 intensity 0.4 ambientIntensity 0.3 }

EXTERNPROTO Stena [
field SFColor barva
field SFVec3f pozice
field SFVec3f meritko
field SFRotation rotace
field MFString textura]
"Objekty\ProtoWall.wrl#Wall"

EXTERNPROTO Stanek [
field SFColor barva
field SFVec3f pozice
field SFVec3f meritko
field SFRotation rotace
field MFString textura]
"Objekty\ProtoStanek.wrl#Stanek"

Group { children [
Stanek { pozice 5 11.25 8.05 meritko 2 2.5 0.1 rotace 0 1 0 0
barva 1 1 1 textura ".\Textury\digis.gif" }
Stanek { pozice 3.95 11.25 9.5 meritko 3 2.5 0.1 rotace 0 1 0 1.571
barva 1 1 1 textura ".\Textury\digis.gif" }
Stanek { pozice 5 11.25 11.05 meritko 2 2.5 0.1 rotace 0 1 0 0
barva 1 1 1 textura ".\Textury\digis.gif" }
Stanek { pozice 3.95 11.25 12 meritko 2 2.5 0.1 rotace 0 1 0 1.571
barva 1 1 1 textura ".\Textury\gis.jpg" }
Stanek { pozice 5 11.25 11.15 meritko 2 2.5 0.1 rotace 0 1 0 0
barva 1 1 1 textura ".\Textury\gis.jpg" }
Stanek { pozice 5 11.25 13.05 meritko 2 2.5 0.1 rotace 0 1 0 0
barva 1 1 1 textura ".\Textury\gis.jpg" }
Stanek { pozice 3.95 11.25 14 meritko 2 2.5 0.1 rotace 0 1 0 1.571
barva 1 1 1 textura ".\Textury\intergraph.gif" }
Stanek { pozice 5 11.25 13.15 meritko 2 2.5 0.1 rotace 0 1 0 0
barva 1 1 1 textura ".\Textury\intergraph.gif" }
Stena { pozice 3.95 11.25 22.25 meritko 1.5 2.5 0.1 rotace 0 1 0 1.571
barva 1 1 1 textura ".\Textury\chodba44.gif" }
Stena { pozice 6.5 11.25 23.05 meritko 1 2.5 0.1 rotace 0 1 0 0
barva 1 1 1 textura ".\Textury\chodba46.gif" }
Stena { pozice 8.95 11.25 20.5 meritko 5 2.5 0.1 rotace 0 1 0 1.571
barva 1 1 1 textura ".\Textury\chodba13.gif" }
Stena { pozice 15 11.25 18.05 meritko 12 2.5 0.1 rotace 0 1 0 0
barva 1 1 1 textura ".\Textury\chodba14.gif" }
Stena { pozice 20.95 11.25 19 meritko 2 2.5 0.1 rotace 0 1 0 1.571
barva 1 1 1 textura ".\Textury\chodba15.gif" }
Stena { pozice 23 11.25 20.05 meritko 4 2.5 0.1 rotace 0 1 0 0
barva 1 1 1 textura ".\Textury\chodba16.gif" }
Stena { pozice 24.95 11.05 19 meritko 2 2.1 0.1 rotace 0 1 0 1.571
barva 1 1 1 textura ".\Textury\chodba17.gif" }
Stena { pozice 31 11.25 18.05 meritko 12 2.5 0.1 rotace 0 1 0 0
barva 1 1 1 textura ".\Textury\chodba18.gif" }
Stena { pozice 36.95 11.25 20.5 meritko 5 2.5 0.1 rotace 0 1 0 1.571
barva 1 1 1 textura ".\Textury\chodba19.gif" }
Stena { pozice 38.95 11.25 20 meritko 6 2.5 0.1 rotace 0 1 0 1.571
barva 1 1 1 textura ".\Textury\chodba21.gif" }
Stena { pozice 41 11.25 17.05 meritko 4 2.5 0.1 rotace 0 1 0 0
barva 1 1 1 textura ".\Textury\chodba22.gif" }
Stanek { pozice 20.05 11.25 15.5 meritko 1 2.5 0.1 rotace 0 1 0 1.571
barva 1 1 1 textura ".\Textury\a4.gif" }
Stanek { pozice 8.85 11.25 10 meritko 4 2.5 0.1 rotace 0 1 0 1.571
barva 1 1 1 textura ".\Textury\geogis.gif" }
Stanek { pozice 8.5 11.25 8.05 meritko 1 2.5 0.1 rotace 0 1 0 0
barva 1 1 1 textura ".\Textury\a4.gif" }
] }

Group { children [
Floor { body [3 10 7.9,43 10 7.9,43 10 23,3 10 23] }
] }

Z ukázky obsahu souboru je patrné, že se jedná o textový formát, který je i bez znalosti struktury a bez použití programovacích technik pro uživatele čitelný (domnívám se však, že poněkud obtížněji než formát SVG).

VRML

K dalším často využívaným formátům bychom mohli zařadit formát CGM (Active CGM), který umožňuje definovat základní geometrické prvky, jejich vzhled a interaktivitu (v podobě WWW adres a změny vzhledu na základně činnosti uživatele).

Další formáty

Některé formáty umožňují ukládat zároveň rastr i vektor, případně i jiné formáty. Příkladem může být CGM, CDR, SVG, SWF (Flash), SMIL. Zařazení těchto formátů je pak přinejmenším problematické, proto mě prosím nekamenujte za uvedenou klasifikaci, případně vynechání některých formátů.

Hybridní, multimediální formáty