Grafika #
Súčasťou zapojení vytváraných v CircuitMacros môžu byť aj lineárne a plošné grafické objekty vykreslované pomocou príkazov jazuka dpic. Čiara sa využíva na prepájanie prvkov zapojenia, ďaľšie grafické tvary môžeme využiť na doplnenie zapojenia alebo zvýraznenie niektorých častí. Rovnako môžeme pomocou nich vytvárať rôzne blokové zapojenia alebo vývojové diagramy.
Poznámka
Základné grafické objekty (line, spline, arc, box, circle, ellipse, move, arrow) sú príkazmi jazyka dpic a majú preto inú formu zápisu ako makrá definované v CircuitMacros, ktoré sú naprogramované s využitím týchto príkazov. Program na vykreslenie zapojenia preto pozostáva z makier pre vykreslovanie komplikovanejších prvkov ako aj príkazov dpic pre kreslenie jednoduchých objektov.
Všeobecný formát pre definíciu grafických objektov v dpic má tvar
[ Reference :] object [ attributes ] [ placement ] [ strings ]
Príklad
L1: line -> from (1,1) to (2,2) "line L1"
L1: - referencia
-> - atribút
line - grafický objekt
from (1,1) to (2,2) - placement, umiestnenie objektu na ploche
"line L1" - text v geometrickom strede objektu
Čiary #
Definovanie čiary je v CircuitMacros možné niekoľkými spôsobmi. V súradnicovej sústave môžeme zadať polohu absolútne dvojicou (x,y). alebo smerom kreslenia a dĺžkou relatívne voči poslednej polohe, ktorá je obsahom premennej Here. Pri prácu so súradnicami môžeme využívať vektorovú aritmetiku. Vykreslením čiary sa aktualizuje hodnota Here na polohu koncového bodu čiary. Ak nechceme kresliť čiaru od aktuálnej pozície, môžeme umiestnenie čiary (placement) definovať nasledujúcim spôsobom
linespec = from position | to position | direction [ expr ]
| linespec linespec
| linespec then linespec
Ak čiaru doplníme atribútom <-, <->, ->, čiara sa vykreslí ako šípka v príslušnej orientácii.
Nasledujúci príklad ukazuje niekoľko možností definície čiary.
Origin: Here
line from (1,1) to (3,2); {"A" above}; # A. absolutne polohy bodov, nastavuje
# poziciu Here na konc. bod
line from Here to (4,2); {"B" below}; # B. ciara od aktualnej pozicie
line to (5,3); {"C" below}; # C. to iste od posledneho bodu
line to Here + (0,1); {"D" ljust}; # D. relativne od poslednej pozicie
line left_ 2; {"E" above}; # E. relativne zadanim smeru v jednej osi
line left_ 1 up_ 1; {"F" rjust}; # F. relativne v dvoch osiach
# G. zadanim postupnosti bodov
line from (6,1) to (7,2) to (8,1) to (9,2); {"G" above};
# H. postupnostou relativnych krokov
line -> from (6,5) right_ 1 then right_ 1 down_ 2 then right_ 1 up_ 1; {"H" above};
Obr. 24 Spôsoby vykreslenia čiary na pracovnej ploche.#
Poznámka
Všimnite si v predchádzajúcom príklade, že relatívnu pozíciu môžeme zadať nielen v kolmých smeroch right_, left_, up_, down_
line right_ 2;
ale aj ich kombináciu, ktorá vykreslí šikmú čiaru
line right_ 2 down_ 1;
Krivky #
Krivky môžeme kresliť rôznymi spôsobmi, pre krivky definované ako spline môžeme nastaviť parametrom tvar krivky (tension parameter). Čiary aj krivky môžeme modifikovať parametrami dashed a dotted, za ktorými môže nasledovať numerická hodnota udávajúca hustotu čiarok alebo bodiek, skutočné závisí od zvolenej mierky obrázku.
Origin: Here
# J. spline krivka, suradnice
# rovnake ako pri ciare
spline from (1,1.5) right_ 1 up_ 1 then right_ 1 down_ 1 then right_ 1 down_ 2 then up_ 3;
{"J" rjust};
color_coral;
arrow from (1,4) right_ 2; {"K" ljust}; # K. sipka menom
line -> from (1,4.5) right_ 2; {"L" ljust}; # L. sipka smerom doprava
line <- from (1, 5) right_ 2; {"M" ljust}; # M. sipka smerom dolava
# N. obojstranna sipka, oznacenie
color_blue # v strede
S1: spline <-> from (6,1) to (7,4) to (8,1) to (9.5,3); {"N" at S1.c};
color_red;
spline 1.4 from (6, 3.5) up_ 2 then right_ 2 then down_ 2 dashed .08;
spline 1.0 from (6, 3.5) up_ 2 then right_ 2 then down_ 2;
spline 0.6 from (6, 3.5) up_ 2 then right_ 2 then down_ 2 dotted .05;
Obr. 25 Použitie splajnových kriviek.#
Atribúty lineárnych prvkov #
Pre čiaru a splajnovú krivku sú definované štandardné atribúty, ku ktorým sa pristupuje referenciou na objekt a operátorom .
.start .s - bod v ktorom bol začiatok kreslenia
.end .e - bod v ktorom skončilo kreslenie
.center .c - geometrický stred prvku
Každý atribút reprezentuje súradnicu v tvare dvojice hodnôt (x,y). Príklad použitia atribútov
L: line to (1,1);
L.center - je ekvivalentom (L.center.x, L.center.y)
alebo (L.c.x, L.c.y)
(L.s, L.e) - je ekvivalentom (L.s.x, L.e.y)
Obddĺžnik, kružnica a elipsa #
Definícia plošných objektov má tvar
box wid x ht y;
circle rad r;
ellipse wid x ht y;
Pri zadaní príkazu vykreslenia objektu tento zadáme bez parametrov, objekt sa vykreslí s prednastavenými (default) hodnotami.
Atribúty plošných prvkov #
Pre plošné objektu sú definované atribúty podľa svetových strán.
.ne .se .nw .sw
.t .top .north .n
.b .bot .bottom .south .s
.right .r .east .e
.left .l .west .w
.start
.end
.center .centre .c
Obr. 26 Atribúty pre box, orientácia podľa svetových strán#
Kruhový oblúk #
Kruhový oblúk je objekt, ktorý zdiela atribútu lineárnych ako aj plošných objektov. Oblúk je definovaný smerom a pomocou dvoch alebo troch bodov
arc cw|ccw from position to position [with .c at position]
Bez zadaného centra je oblúk vykreslený ako polkružnica so stredom medzi koncovými bodmi oblúka.
P1: (1, 1);
P2: (4, 4);
P3: (3.5, 1.5)
# označenie
circle rad 0.1 at P1; # zaciatok
circle rad 0.1 at P2; # koniec
rad 0.1 at P3; # stred A2
color_red;
A1: arc cw from P1 to P2 # obluk A1
"A1" at A1.nw above rjust;
L1: line from P1 to P2 dashed;
circle rad 0.1 at L1.c; # stred A1
color_blue
A2: arc -> cw from P1 to P2 with .c at P3
line from P1 to P3 dashed;
line from P2 to P3 dashed;
"A2" at A2.nw above rjust;
Obr. 27 Kruhový oblúk#