public static class GRobot.Spojnica extends Object
Táto trieda slúži na uchovávanie a prístup k vlastnostiam čiarových spojníc, ktoré sú definovateľné medzi robotmi. Na vytváranie (prípane rušenie) spojníc slúžia výhradne metódy z kategórie spojníc grafického robota. Táto trieda poskytuje prístup k hodnotám jestvujúcich nastavení (vrátane poskytovania možnosti ich zmien) a tiež umožňuje nastavovať a čítať doplnkové vlastnosti spojníc, napríklad vysunutie alebo definovanie tvaru značky začiatku a/alebo konca čiary spojnice.
Príklad:
Nasledujúci jednoduchý príklad ukazuje nielen vytvorenie spojníc a konfiguráciu ich vlastností, ale používa zároveň automatickú konfiguráciu sveta a obsluhu udalostí, vďaka ktorej je možné roboty na plátne presúvať myšou.
import
knižnica.*;import
static
knižnica.Konštanty
.*;public
class
TestovanieSpojníc {public
static
void
main(String
[] args) {// Začiatok automatickej konfigurácie:
Svet
.použiKonfiguráciu
("TestovanieSpojníc.cfg"
);// Definícia kreslenia vlastného tvaru robotov (elipsy s menom
// robota v strede):
KreslenieTvaru
tvar = r -> { r.elipsa
(2
); r.text
(r.meno
()); };// Definícia kreslenia koncových značiek čiar spojníc:
KreslenieTvaru
šípka = r -> { r.vpravo
(30
); r.dopredu
(10
); r.zdvihniPero
(); r.vzad
(10
); r.vľavo
(60
); r.položPero
(); r.dopredu
(10
); };
// Vytvorenie štyroch inštancií robotov, ktoré budú prepojené
// spojnicami (prvý robot je hlavný, takže používame konštruktor,
// ktorým zároveň nastavíme veľkosť plátien):
GRobot
alfa =new
GRobot
(400
,400
) {{meno
("Alfa"
);vlastnýTvar
(tvar);veľkosť
(20
);skočNa
(-100
,100
);nekresliTvary
(); }};GRobot
beta =new
GRobot
() {{meno
("Beta"
);vlastnýTvar
(tvar);veľkosť
(30
);skočNa
(100
,100
);nekresliTvary
(); }};GRobot
gama =new
GRobot
() {{meno
("Gama"
);vlastnýTvar
(tvar);veľkosť
(40
);skočNa
(100
, -100
);nekresliTvary
(); }};GRobot
delta =new
GRobot
() {{meno
("Delta"
);vlastnýTvar
(tvar);veľkosť
(30
);skočNa
(-100
, -100
);nekresliTvary
(); }};// Uloženie inštancií do zoznamu:
final
Zoznam
<GRobot
> zoznam =new
Zoznam
<GRobot
>( alfa, beta, gama, delta);
// Vytvorenie (definovanie) spojníc a ich vlastností:
alfa.spojnica
(beta, alfa.elipsa
(2
), beta.elipsa
(2
)) .definujZnačkuKonca
(šípka) .vysunutie
(10
); beta.spojnica
(alfa, beta.elipsa
(2
), alfa.elipsa
(2
)) .definujZnačkuKonca
(šípka) .vysunutie
(10
); alfa.spojnica
(gama, alfa.elipsa
(2
), gama.elipsa
(2
)) .definujZnačkuZačiatku
(šípka) .definujZnačkuKonca
(šípka); beta.spojnica
(delta, beta.elipsa
(2
), delta.elipsa
(2
)) .definujZnačkuZačiatku
(šípka) .definujZnačkuKonca
(šípka);
// Dokončenie automatickej konfigurácie a obsluha udalostí:
for
(GRobot
r : zoznam) r.registrujVKonfigurácii
();new
ObsluhaUdalostí
() {GRobot
aktívnyRobot =null
;@
Overridepublic
void
klik
() {ťahanieMyšou
(); }@
Overridepublic
void
stlačenieTlačidlaMyši
() { aktívnyRobot =null
;for
(GRobot
r : zoznam)if
(r.myšVElipse
(2
)) aktívnyRobot = r; }@
Overridepublic
void
ťahanieMyšou
() {if
(null
!= aktívnyRobot) {if
(ÚdajeUdalostí
.myš
().isShiftDown
()) {if
(ÚdajeUdalostí
.tlačidloMyši
(ĽAVÉ
)) aktívnyRobot.otočNaMyš
(); }else
{if
(ÚdajeUdalostí
.tlačidloMyši
(ĽAVÉ
)) aktívnyRobot.skočNaMyš
(); } } } }; } }
Výsledok:
Ukážka
výsledku príkladu pri jeho prvom spustení.
Modifikátor a typ | Atribút a opis |
---|---|
TreeMap<String,Object> |
parametre
Parametre rôzneho druhu asociované s touto spojnicou.
|
Modifikátor a typ | Metóda a opis |
---|---|
Stroke |
ciara()
Alias pre
čiara . |
GRobot.Spojnica |
ciara(Stroke čiara)
Alias pre
čiara . |
GRobot |
ciel()
Alias pre
cieľ . |
GRobot |
cieľ()
Vráti inštanciu cieľového robota, čiže toho, ku ktorému
smeruje táto spojnica.
|
Stroke |
čiara()
Vráti objekt typu (implementáciu rozhrania)
Stroke určujúcu viaceré vlastnosti čiary. |
GRobot.Spojnica |
čiara(Stroke čiara)
Umožňuje určiť nový štýl čiary prostredníctvom
implementácie rozhrania
Stroke . |
Shape |
dajOrezanieZnackyKonca()
Alias pre
dajOrezanieZnačkyKonca . |
Shape |
dajOrezanieZnackyZaciatku()
Alias pre
dajOrezanieZnačkyZačiatku . |
Shape |
dajOrezanieZnačkyKonca()
Vráti inštanciu tvaru vlastného orezania
značiek pri konci čiary spojnice alebo
null ,
ak je použité rovnaké orezanie ako pri kreslení samotnej
spojnice. |
Shape |
dajOrezanieZnačkyZačiatku()
Vráti inštanciu tvaru vlastného orezania
značiek pri začiatku čiary spojnice alebo
null ,
ak je použité rovnaké orezanie ako pri kreslení samotnej
spojnice. |
KreslenieTvaru |
dajZnackuKonca()
Alias pre
dajZnačkuKonca . |
KreslenieTvaru |
dajZnackuZaciatku()
Alias pre
dajZnačkuZačiatku . |
KreslenieTvaru |
dajZnačkuKonca()
Vráti implementované rozhranie kreslenia tvaru koncovej značky čiary spojnice alebo
null , ak koncová značka nie je definovaná. |
KreslenieTvaru |
dajZnačkuZačiatku()
Vráti implementované rozhranie kreslenia tvaru začiatočnej značky čiary spojnice alebo
null , ak začiatočná značka nie je definovaná. |
GRobot.Spojnica |
definujZnackuKonca(KreslenieTvaru kreslenie)
Alias pre
definujZnačkuKonca . |
GRobot.Spojnica |
definujZnackuKonca(KreslenieTvaru kreslenie,
Shape vlastnéOrezanie)
Alias pre
definujZnačkuKonca . |
GRobot.Spojnica |
definujZnackuZaciatku(KreslenieTvaru kreslenie)
Alias pre
definujZnačkuZačiatku . |
GRobot.Spojnica |
definujZnackuZaciatku(KreslenieTvaru kreslenie,
Shape vlastnéOrezanie)
Alias pre
definujZnačkuZačiatku . |
GRobot.Spojnica |
definujZnačkuKonca(KreslenieTvaru kreslenie)
Definuje koncovú značku čiary spojnice pomocou
rozhrania, ktoré v programovacom rámci zároveň slúži na
definovanie vlastného tvaru robota.
|
GRobot.Spojnica |
definujZnačkuKonca(KreslenieTvaru kreslenie,
Shape vlastnéOrezanie)
Definuje koncovú značku čiary spojnice pomocou
rozhrania, ktoré v programovacom rámci zároveň slúži na
definovanie vlastného tvaru robota a s vlastným spôsobom
orezania (ktoré sa vzťahuje aj na prípadnú začiatočnú
značku).
|
GRobot.Spojnica |
definujZnačkuZačiatku(KreslenieTvaru kreslenie)
Definuje začiatočnú značku čiary spojnice pomocou
rozhrania, ktoré v programovacom rámci zároveň slúži na
definovanie vlastného tvaru robota.
|
GRobot.Spojnica |
definujZnačkuZačiatku(KreslenieTvaru kreslenie,
Shape vlastnéOrezanie)
Definuje začiatočnú značku čiary spojnice pomocou
rozhrania, ktoré v programovacom rámci zároveň slúži na
definovanie vlastného tvaru robota a s vlastným spôsobom
orezania (ktoré sa vzťahuje aj na prípadnú koncovú značku).
|
Farba |
farba()
Vráti aktuálnu farbu začiatku čiary spojnice alebo
hodnotu
null , ak je farba zdedená od zdrojového
robota. |
GRobot.Spojnica |
farba(Color farba)
Určuje novú farbu začiatku čiary spojnice.
|
GRobot.Spojnica |
farba(Farebnosť objekt)
Určuje novú farbu začiatku čiary spojnice prostredníctvom
objektu, ktorý implementuje rozhranie
Farebnosť . |
Farba |
farbaKonca()
Vráti farbu ukončenia čiary spojnice (slúžiacej na vytvorenie
farebného prechodu) alebo hodnotu
null , ak je farba
určená automaticky. |
GRobot.Spojnica |
farbaKonca(Color farba)
Určuje farbu ukončenia čiary spojnice.
|
GRobot.Spojnica |
farbaKonca(Farebnosť objekt)
Určuje farbu ukončenia čiary spojnice prostredníctvom objektu,
ktorý implementuje rozhranie
Farebnosť . |
double |
hrubkaCiary()
Alias pre
hrúbkaČiary . |
GRobot.Spojnica |
hrubkaCiary(double hrúbkaČiary)
Alias pre
hrúbkaČiary . |
double |
hrúbkaČiary()
Vráti hrúbku čiary poskytnutú aktuálnym štýlom čiary.
|
GRobot.Spojnica |
hrúbkaČiary(double hrúbkaČiary)
Určí novú hrúbku čiary spojnice.
|
Shape |
orezanieKonca()
Vráti tvar orezania konca spojnice alebo
null ,
ak orezanie nebolo definované. |
GRobot.Spojnica |
orezanieKonca(Shape orezanieKonca)
Definuje tvar orezania konca spojnice.
|
Shape |
orezanieZaciatku()
Alias pre
orezanieZačiatku . |
GRobot.Spojnica |
orezanieZaciatku(Shape orezanieZačiatku)
Alias pre
orezanieZačiatku . |
Shape |
orezanieZačiatku()
Vráti tvar orezania začiatku spojnice alebo
null ,
ak orezanie nebolo definované. |
GRobot.Spojnica |
orezanieZačiatku(Shape orezanieZačiatku)
Definuje tvar orezania začiatku spojnice.
|
Object |
parameter(String index)
Vráti hodnotu parametra asociovanú so zadaným indexom.
|
void |
parameter(String index,
Object hodnota)
Nastaví alebo vymaže hodnotu parametra asociovanú so
zadaným indexom.
|
void |
skry()
Skryje túto spojnicu.
|
boolean |
skryta()
Alias pre
skrytá . |
boolean |
skrytá()
Zistí, či je spojnica viditeľná alebo skrytá.
|
Line2D.Double |
tvar()
Prepočíta a vráti aktuálny tvar úsečky tejto spojnice.
|
void |
ukaz()
Alias pre
ukáž . |
void |
ukaz(boolean ukáž)
Alias pre
ukáž . |
void |
ukáž()
Zobrazí túto spojnicu.
|
void |
ukáž(boolean ukáž)
Zobrazí alebo skryje túto spojnicu podľa hodnoty
parametra
ukáž . |
GRobot.Spojnica |
upravOrezanieZnackyKonca(Shape vlastnéOrezanie)
Alias pre
upravOrezanieZnačkyKonca . |
GRobot.Spojnica |
upravOrezanieZnackyZaciatku(Shape vlastnéOrezanie)
Alias pre
upravOrezanieZnačkyZačiatku . |
GRobot.Spojnica |
upravOrezanieZnačkyKonca(Shape vlastnéOrezanie)
Umožňuje zmeniť spôsob orezania značiek pri začiatku
spojnice.
|
GRobot.Spojnica |
upravOrezanieZnačkyZačiatku(Shape vlastnéOrezanie)
Umožňuje zmeniť spôsob orezania značiek pri začiatku
spojnice.
|
boolean |
viditelna()
Alias pre
viditeľná . |
boolean |
viditeľná()
Zistí, či je spojnica viditeľná alebo skrytá.
|
GRobot.Spojnica |
vysunutie(double vysunutie)
Umožňuje určiť vysunutie oboch koncov spojnice od stredov
prepájaných robotov súčasne.
|
double |
vysunutieKonca()
Zistí aktuálne vysunutie konca spojnice od jej stredu.
|
GRobot.Spojnica |
vysunutieKonca(double vysunutie)
Umožňuje určiť vysunutie koncového bodu spojnice od jeho
stredu.
|
double |
vysunutieZaciatku()
Alias pre
vysunutieZačiatku . |
GRobot.Spojnica |
vysunutieZaciatku(double vysunutie)
Alias pre
vysunutieZačiatku . |
double |
vysunutieZačiatku()
Zistí aktuálne vysunutie začiatku spojnice od jej stredu.
|
GRobot.Spojnica |
vysunutieZačiatku(double vysunutie)
Umožňuje určiť vysunutie začiatočného bodu spojnice od jeho
stredu.
|
GRobot |
zdroj()
Vráti inštanciu zdrojového robota, čiže toho, od ktorého
smeruje táto spojnica.
|
void |
zobraz()
Zobrazí túto spojnicu.
|
void |
zobraz(boolean zobraz)
Zobrazí alebo skryje túto spojnicu podľa hodnoty
parametra
zobraz . |
boolean |
zobrazena()
Alias pre
zobrazená . |
boolean |
zobrazená()
Zistí, či je spojnica viditeľná alebo skrytá.
|
public final TreeMap<String,Object> parametre
Parametre rôzneho druhu asociované s touto spojnicou.
Na mierne zjednodušenie práce s touto mapou boli
definované dve metódy spojnice: parameter(index)
a parameter(index, hodnota)
.
public Object parameter(String index)
Vráti hodnotu parametra asociovanú so zadaným indexom.
Ak je hodnota indexu rovná null
, tak metóda
vráti null
. Ak parameter nie je definovaný, tak
metóda tiež vráti null
.
Poznámka: Keďže prístup
k mape parametrov spojnice je
verejný, programátor môže do nej vkladať ľubovoľné hodnoty
parametrov, vrátane prázdnych (null
). Stavy,
kedy parameter nejestvuje a kedy je jeho hodnota rovná
null
nie je možné touto metódou rozlíšiť. Na to
treba použiť metódu parameter.containsKey(index)
.
index
– index asociovaný s hodnotou parametranull
public void parameter(String index, Object hodnota)
Nastaví alebo vymaže hodnotu parametra asociovanú so
zadaným indexom. Ak je hodnota indexu rovná null
,
tak metóda nevykoná nič. Ak je hodnota parametra rovná
null
, tak ho metóda zo zoznamu parametrov
vymaže.
Poznámka: Prístup
k mape parametrov spojnice je
verejný. Vďaka tomu môže do nej programátor vkladať
ľubovoľné hodnoty parametrov, vrátane prázdnych
(null
), avšak potom sa musí riadiť pravidlami
práce s mapou TreeMap
.
index
– index asociovaný s hodnotou parametrahodnota
– nová hodnota parametra, ak má byť parameter
nastavený alebo null
, ak má byť parameter
vymazanýpublic KreslenieTvaru dajZnačkuZačiatku()
Vráti implementované rozhranie kreslenia tvaru začiatočnej značky čiary spojnice alebo
null
, ak začiatočná značka nie je definovaná.
null
, ak značka nemá byť kreslenápublic KreslenieTvaru dajZnackuZaciatku()
Alias pre dajZnačkuZačiatku
.
public KreslenieTvaru dajZnačkuKonca()
Vráti implementované rozhranie kreslenia tvaru koncovej značky čiary spojnice alebo
null
, ak koncová značka nie je definovaná.
null
, ak značka nemá byť kreslenápublic KreslenieTvaru dajZnackuKonca()
Alias pre dajZnačkuKonca
.
public GRobot.Spojnica definujZnačkuZačiatku(KreslenieTvaru kreslenie)
Definuje začiatočnú značku čiary spojnice pomocou
rozhrania, ktoré v programovacom rámci zároveň slúži na
definovanie vlastného tvaru robota. Hodnota null
znamená, že značka začiatku spojnice nemá byť kreslená.
Príklad:
// Vytvorenie dvoch robotov:
GRobot
robotA =new
GRobot
();GRobot
robotB =new
GRobot
();// Definície tvarov (objektov kreslenia tvaru):
KreslenieTvaru
tvarRobotov = r -> r.krúžok
();KreslenieTvaru
tvarŠípky = r -> { r.vpravo
(30
); r.vpred
(r.veľkosť
() /2
); r.domov
(); r.vľavo
(30
); r.vpred
(r.veľkosť
() /2
); };// Priradenie tvarov robotom:
robotA.vlastnýTvar
(tvarRobotov); robotB.vlastnýTvar
(tvarRobotov);// Úprava veľkostí, polôh a vypnutie kreslenia tvarov robotmi:
robotA.veľkosť
(40
); robotB.veľkosť
(60
); robotA.skoč
(50
,80
); robotB.skoč
(-50
, -80
); robotA.nekresliTvary
(); robotB.nekresliTvary
();// Definícia novej spojnice s tvarmi jej orezania a značkami začiatku
// a konca. Metódy spojnica, definujZnačkuZačiatku a definujZnačkuKonca
// sú zreťazené: Keďže návratovou hodnotou metódy spojnica je objekt
// spojnice, dá sa na neho priamo nadviazať volaním metódy
// definujZnačuZačiatku a keďže aj jej návratovou hodnotou je ten istý
// objekt, dá sa na to opäť nadviazať volaním metódy definujZnačkuKonca.
robotA.spojnica
(robotB, robotA.krúžok
(), robotB.krúžok
()) .definujZnačkuZačiatku
(tvarŠípky) .definujZnačkuKonca
(tvarŠípky);// Toto zreťazenie by sme mohli rozpísať takto:
// Spojnica spojnica = robotA.spojnica(robotB,
// robotA.krúžok(), robotB.krúžok());
// spojnica.definujZnačkuZačiatku(tvarŠípky);
// spojnica.definujZnačkuKonca(tvarŠípky);
Výsledok:
Výsledné zobrazenie príkladu definície
vlastných značiek spojnice.
kreslenie
– inštancia implementácie vlastného tvaru,
ktorá zabezpečí nakreslenie začiatočnej značky spojnice
alebo null
ak značka nemá byť kreslenápublic GRobot.Spojnica definujZnackuZaciatku(KreslenieTvaru kreslenie)
Alias pre definujZnačkuZačiatku
.
public GRobot.Spojnica definujZnačkuKonca(KreslenieTvaru kreslenie)
Definuje koncovú značku čiary spojnice pomocou
rozhrania, ktoré v programovacom rámci zároveň slúži na
definovanie vlastného tvaru robota. Hodnota null
znamená, že značka konca spojnice nemá byť kreslená.
Poznámka: Príklad použitia definície
koncovej aj začiatočnej značky spojnice je v opise metódy
definujZnačkuZačiatku
.
kreslenie
– inštancia implementácie vlastného tvaru,
ktorá zabezpečí nakreslenie koncovej značky spojnice
alebo null
ak značka nemá byť kreslenápublic GRobot.Spojnica definujZnackuKonca(KreslenieTvaru kreslenie)
Alias pre definujZnačkuKonca
.
public GRobot.Spojnica definujZnačkuZačiatku(KreslenieTvaru kreslenie, Shape vlastnéOrezanie)
Definuje začiatočnú značku čiary spojnice pomocou
rozhrania, ktoré v programovacom rámci zároveň slúži na
definovanie vlastného tvaru robota a s vlastným spôsobom
orezania (ktoré sa vzťahuje aj na prípadnú koncovú značku).
Hodnota null
parametra kreslenie
znamená,
že značka začiatku spojnice nemá byť kreslená, ale v tom
prípade stráca hodnota parametra vlastnéOrezanie
akýkoľvek ďalší zmysel. Inak určuje parameter
vlastnéOrezanie
vlastný tvar orezania kreslenia
oboch značiek, ktorý má byť odlišný od orezania kreslenia
čiary samotnej spojnice. Hodnota null
parametra
vlastnéOrezanie
hovorí, že pri kreslení značiek
má byť použité rovnaké orezanie ako pri kreslení čiary
spojnice.
Podrobnejšie informácie o značkách začiatku a konca
spojnice sú v opise metódy
definujZnačkuZačiatku
.
Vlastné orezanie je podrobnejšie vysvetlené v opise
metódy upravOrezanieZnačkyZačiatku
(resp. upravOrezanieZnačkyKonca
).
Poznámka: Príklad použitia
definície začiatočnej a koncovej značky spojnice je v opise
metódy definujZnačkuZačiatku
a príklad použitia vlastného
orezania začiatočnej a koncovej značky je v opise metódy
upravOrezanieZnačkyZačiatku
.
Tip: ak chcete druhý parameter využiť na orezanie kreslenia koncovej značky, ale nekresliť žiadnu začiatočnú značku, tak implementujte a použite prázdne rozhranie kreslenia tvaru – to jest také, ktoré jestvuje, ale nič nekreslí.
kreslenie
– inštancia implementácie vlastného tvaru,
ktorá zabezpečí nakreslenie začiatočnej značky spojnice
alebo null
ak značka nemá byť kreslená –
v takom prípade stráca hodnota ďalšieho parametra významvlastnéOrezanie
– dovoľuje definovať vlastné orezanie
kreslenia značiek; ak je null
, tak je použité
orezanie, ktoré bolo definované na kreslenie samotnej
čiary spojnicepublic GRobot.Spojnica definujZnackuZaciatku(KreslenieTvaru kreslenie, Shape vlastnéOrezanie)
Alias pre definujZnačkuZačiatku
.
public GRobot.Spojnica definujZnačkuKonca(KreslenieTvaru kreslenie, Shape vlastnéOrezanie)
Definuje koncovú značku čiary spojnice pomocou
rozhrania, ktoré v programovacom rámci zároveň slúži na
definovanie vlastného tvaru robota a s vlastným spôsobom
orezania (ktoré sa vzťahuje aj na prípadnú začiatočnú
značku). Hodnota null
znamená, že značka konca
spojnice nemá byť kreslená, ale v tom prípade stráca hodnota
parametra vlastnéOrezanie
akýkoľvek ďalší zmysel.
Inak určuje parameter vlastnéOrezanie
vlastný tvar
orezania kreslenia oboch značiek, ktorý má byť odlišný od
orezania kreslenia čiary samotnej spojnice. Hodnota
null
parametra vlastnéOrezanie
hovorí,
že pri kreslení značiek má byť použité rovnaké orezanie ako
pri kreslení čiary spojnice.
Podrobnejšie informácie o značkách konca aj začiatku
spojnice sú v opise metódy
definujZnačkuZačiatku
.
Vlastné orezanie je podrobnejšie vysvetlené v opise
metódy upravOrezanieZnačkyKonca
(resp. upravOrezanieZnačkyZačiatku
).
Poznámka: Príklad použitia
definície koncovej aj začiatočnej značky spojnice je v opise
metódy definujZnačkuZačiatku
a príklad použitia vlastného
orezania koncovej aj začiatočnej značky je v opise metódy
upravOrezanieZnačkyZačiatku
.
Tip: ak chcete druhý parameter využiť na orezanie kreslenia začiatočnej značky, ale nekresliť žiadnu koncovú značku, tak implementujte a použite prázdne rozhranie kreslenia tvaru – to jest také, ktoré jestvuje, ale nič nekreslí.
kreslenie
– inštancia implementácie vlastného tvaru,
ktorá zabezpečí nakreslenie koncovej značky spojnice
alebo null
ak značka nemá byť kreslená –
v takom prípade stráca hodnota ďalšieho parametra významvlastnéOrezanie
– dovoľuje definovať vlastné orezanie
kreslenia značiek; ak je null
, tak je použité
orezanie, ktoré bolo definované na kreslenie samotnej
čiary spojnicepublic GRobot.Spojnica definujZnackuKonca(KreslenieTvaru kreslenie, Shape vlastnéOrezanie)
Alias pre definujZnačkuKonca
.
public Shape dajOrezanieZnačkyZačiatku()
Vráti inštanciu tvaru vlastného orezania
značiek pri začiatku čiary spojnice alebo null
,
ak je použité rovnaké orezanie ako pri kreslení samotnej
spojnice.
null
, ak má byť
použité rovnaké orezanie ako pri kreslení samotnej
spojnicepublic Shape dajOrezanieZnackyZaciatku()
Alias pre dajOrezanieZnačkyZačiatku
.
public Shape dajOrezanieZnačkyKonca()
Vráti inštanciu tvaru vlastného orezania
značiek pri konci čiary spojnice alebo null
,
ak je použité rovnaké orezanie ako pri kreslení samotnej
spojnice.
null
, ak má byť
použité rovnaké orezanie ako pri kreslení samotnej
spojnicepublic Shape dajOrezanieZnackyKonca()
Alias pre dajOrezanieZnačkyKonca
.
public GRobot.Spojnica upravOrezanieZnačkyZačiatku(Shape vlastnéOrezanie)
Umožňuje zmeniť spôsob orezania značiek pri začiatku spojnice.
Pozor! Volanie tejto metódy nemá
význam ak nie je definované kreslenie značky
začiatku! Hodnota null
znamená, že má byť
použité rovnaké orezanie ako pri kreslení samotnej čiary
spojnice.
Tip: Ak chcete použiť vlastné orezanie kreslenia značiek pri začiatku spojnice, a pritom nekresliť žiadnu začiatočnú značku, tak implementujte a použite prázdne rozhranie kreslenia tvaru – to jest také, ktoré jestvuje, ale nič nekreslí.
Ukážka využitia vlastného
orezania
(podrobnejšie vysvetlenie je
nižšie).
Obrázok vyššie ukazuje dve situácie používajúce vlastné orezanie značiek začiatku a konca. Obrázok poskytuje pohľad na detail časti scény, ktorej úplná zmenšená verzia je vložená do rámčeka v pravej hornej časti obrázka. Obrázok je výsledkom riešenia zadania, ktoré určovalo, že elipsa A má mať značku spojnice (v tvare krúžka) kreslenú z vonkajšej strany a elipsa B naopak z vnútornej strany svojho tvaru.
Elipsa A musí mať nastavené väčšie rozmery orezania než
sú jej vlastné rozmery, aby bola čiara spojnice kreslená
ďalej od okraja elipsy. Rozmer orezania spojnice pri tejto
elipse naznačuje oranžová čiara nakreslená v detailnom
pohľade. Ak by nejestvovala možnosť nastavenia vlastného
orezania značky, tak by značku nebolo vidno, lebo všetko za
hranicou oranžovej čiary by bolo orezané (vrátane značky).
Značka musí mať nastavené vlastné orezanie totožné
s rozmermi elipsy (prípadne prázdne orezanie –
prázdnu oblasť orezania, avšak pozor, to neznamená
hodnotu null
; hodnota null
by opäť
znamenala orezanie totožné s hlavným orezaním, čiže na
úrovni oranžovej čiary; prázdnu oblasť vytvoríte
napríklad príkazom new
Oblasť
()
alebo spustením
metódy vymaž
pre jestvujúcu
oblasť).
Elipsa B musí mať nastavené rovnaké rozmery orezania
ako sú jej vlastné rozmery, aby sa čiara spojnice končila
presne na jej hraniciach. Ak by nejestvovala možnosť
nastavenia vlastného orezania značky, tak by značku takmer
nebolo vidno, lebo by bola z väčšej časti „ponorená“
vo vnútri oblasti, ktorá je orezaná. Aby bola celá značka
viditeľná, musí mať nastavené menšie rozmery orezania,
napríklad také, ktoré sú na obrázku naznačené žltou
čiarou (prípadne sa dá použiť prázdna oblasť
orezania tak ako pri elipse A, pričom to opäť
neznamená vloženie hodnoty null
namiesto
oblasti vlastného orezania, ale jestvujúcej oblasti
bez geometrie).
Príklad:
Nasledujúci úryvok kódu ukazuje jednoduchý spôsob riešenia rovnakej úlohy akú znázorňuje obrázok a opisuje text vyššie (tesne nad týmto príkladom).
// Definovanie konštánt – veľkosť robotov, veľkosti značiek a pomer
// medzi šírkou a výškou elipsy, ktorá bude tvarom robotov:
final
double
veľkosťRobota =50.0
;final
double
veľkosťZnačky =12.5
;final
double
pomer =2.5
;
// Definícia tvaru robotov:
KreslenieTvaru
tvar = r -> { r.elipsa
(pomer); r.text
(r.meno
()); };// Definícia tvaru značiek:
KreslenieTvaru
značka = r -> { r.zdvihniPero
(); r.vzad
(veľkosťZnačky); r.kružnica
(veľkosťZnačky); };
// Definícia prvého robota (A):
GRobot
A =new
GRobot
() {{meno
("A"
);veľkosť
(veľkosťRobota);vlastnýTvar
(tvar);nekresliTvary
();skoč
(-180
,150
); }};// Definícia druhého robota (B):
GRobot
B =new
GRobot
() {{meno
("B"
);veľkosť
(veľkosťRobota);vlastnýTvar
(tvar);nekresliTvary
();skoč
(180
, -150
); }};
// Definícia spojnice so začiatkom v robote (elipse) A a koncom
// v robote (elipse) B:
A.spojnica
(B,// Orezanie začiatku spojnice – elipsa, ktorá je väčšia oproti
// kreslenému tvaru:
A.elipsa
(pomer * A.veľkosť
() + veľkosťZnačky *2.0
, A.veľkosť
() + veľkosťZnačky *2.0
),// Orezanie konca spojnice – elipsa, ktorá je totožná s kresleným
// tvarom:
B.elipsa
(pomer))// Definícia značky na začiatku spojnice s vlastným tvarom
// orezania (elipsou totožnou s kresleným tvarom):
.definujZnačkuZačiatku
(značka, A.elipsa
(pomer))// Definícia značky na konci spojnice s vlastným tvarom
// orezania (elipsou menšou oproti kreslenému tvaru):
.definujZnačkuKonca
(značka, B.elipsa
(pomer * B.veľkosť
() - veľkosťZnačky *2.0
, B.veľkosť
() - veľkosťZnačky *2.0
));
vlastnéOrezanie
– vlastné orezanie kreslenia značiek
pri začiatku spojnice alebo null
, ak má
byť použité rovnaké orezanie, aké je definované pre
kreslenie samotnej čiary spojnicepublic GRobot.Spojnica upravOrezanieZnackyZaciatku(Shape vlastnéOrezanie)
Alias pre upravOrezanieZnačkyZačiatku
.
public GRobot.Spojnica upravOrezanieZnačkyKonca(Shape vlastnéOrezanie)
Umožňuje zmeniť spôsob orezania značiek pri začiatku spojnice.
Pozor! Volanie tejto metódy nemá
význam ak nie je definované kreslenie značky
konca! Hodnota null
znamená, že má byť použité
rovnaké orezanie ako pri kreslení samotnej čiary spojnice.
Tip: Ak chcete použiť vlastné orezanie kreslenia značiek pri konci spojnice, a pritom nekresliť žiadnu koncovú značku, tak implementujte a použite prázdne rozhranie kreslenia tvaru – to jest také, ktoré jestvuje, ale nič nekreslí.
Ukážka využitia vlastného
orezania
(podrobnejšie vysvetlenie je
v opise metódy upravOrezanieZnačkyZačiatku
pod identickým
obrázkom.).
Obrázok vyššie ukazuje dve situácie používajúce vlastné
orezanie značiek začiatku a konca. Obrázok poskytuje pohľad
na detail časti scény, ktorej úplná zmenšená verzia je
vložená do rámčeka v pravej hornej časti obrázka. Obrázok
je výsledkom riešenia zadania, ktoré určovalo, že elipsa
A má mať značku spojnice (v tvare krúžka) kreslenú
z vonkajšej strany a elipsa B naopak z vnútornej strany
svojho tvaru. Podrobnejšie vysvetlenie je v opise metódy
upravOrezanieZnačkyZačiatku
(pod identickým
obrázkom).
Poznámka: Príklad použitia vlastného
orezania koncovej aj začiatočnej značky je v opise metódy
upravOrezanieZnačkyZačiatku
.
vlastnéOrezanie
– vlastné orezanie kreslenia značiek
pri konci spojnice alebo null
, ak má byť
použité rovnaké orezanie, aké je definované pre
kreslenie samotnej čiary spojnicepublic GRobot.Spojnica upravOrezanieZnackyKonca(Shape vlastnéOrezanie)
Alias pre upravOrezanieZnačkyKonca
.
public Line2D.Double tvar()
Prepočíta a vráti aktuálny tvar úsečky tejto spojnice. Metóda je použiteľná napríklad pri exporte spojníc do formátu SVG.
public GRobot zdroj()
Vráti inštanciu zdrojového robota, čiže toho, od ktorého smeruje táto spojnica.
public GRobot cieľ()
Vráti inštanciu cieľového robota, čiže toho, ku ktorému smeruje táto spojnica.
public Stroke čiara()
Vráti objekt typu (implementáciu rozhrania) Stroke
určujúcu viaceré vlastnosti čiary. Je vysoká
pravdepodobnosť, že vrátená implementácia je typu
BasicStroke
, ktorá umožňuje zistiť
hrúbku čiary,
štýl ukončenia
čiary, štýl
spojov lomených čiar,
pole hodnôt
určujúcich čiarkovanú čiaru a podobne.
Stroke
určujúca viaceré vlastnosti čiaryčiara(Stroke)
,
hrúbkaČiary()
,
hrúbkaČiary(double)
public GRobot.Spojnica čiara(Stroke čiara)
Umožňuje určiť nový štýl čiary prostredníctvom
implementácie rozhrania Stroke
. Základnou
implementáciou je trieda BasicStroke
,
ktorá umožňuje definovať značné množstvo vlastností čiary.
(Najzložitejší konštruktor uvedenej triedy prijíma
hrúbku čiary, štýl ukončenia čiary, štýl
spojov lomených čiar, limit dĺžky špičiek ostrých hrán,
pole hodnôt určujúcich čiarkovanú čiaru a fázu čiarkovanej
čiary.)
čiara
– štýl čiary určenej implementáciou rozhrania
Stroke
, napríklad BasicStroke
čiara()
,
hrúbkaČiary()
,
hrúbkaČiary(double)
public GRobot.Spojnica ciara(Stroke čiara)
Alias pre čiara
.
public double hrúbkaČiary()
Vráti hrúbku čiary poskytnutú aktuálnym štýlom čiary. Ak
hrúbka nie je zistiteľná, tak metóda vráti hodnotu
-1
.
-1
hrúbkaČiary(double)
,
čiara()
,
čiara(Stroke)
public double hrubkaCiary()
Alias pre hrúbkaČiary
.
public GRobot.Spojnica hrúbkaČiary(double hrúbkaČiary)
Určí novú hrúbku čiary spojnice. Ak je zadaná záporná hodnota, tak spojnica počas kreslenia prevezme hrúbku (resp. aj štýl) čiary zdrojového robota spojnice.
hrúbkaČiary
– nová hrúbka čiary, prípadne záporná
hodnota, ak má byť štýl čiary zdedený od hlavného robotahrúbkaČiary()
,
čiara()
,
čiara(Stroke)
public GRobot.Spojnica hrubkaCiary(double hrúbkaČiary)
Alias pre hrúbkaČiary
.
public Farba farba()
Vráti aktuálnu farbu začiatku čiary spojnice alebo
hodnotu null
, ak je farba zdedená od zdrojového
robota.
null
public GRobot.Spojnica farba(Color farba)
Určuje novú farbu začiatku čiary spojnice. Metóda
prijíma aj hodnotu null
. V takom prípade bude
farba spojnice počas kreslenia prevzatá od zdrojového
robota.
farba
– nová farba začiatku spojnice alebo null
public GRobot.Spojnica farba(Farebnosť objekt)
Určuje novú farbu začiatku čiary spojnice prostredníctvom
objektu, ktorý implementuje rozhranie Farebnosť
.
Metóda prijíma aj hodnotu null
. V takom prípade
bude farba spojnice počas kreslenia prevzatá od zdrojového
robota.
objekt
– objekt určujúci novú farbu začiatku spojnice
alebo null
public Farba farbaKonca()
Vráti farbu ukončenia čiary spojnice (slúžiacej na vytvorenie
farebného prechodu) alebo hodnotu null
, ak je farba
určená automaticky.
null
public GRobot.Spojnica farbaKonca(Color farba)
Určuje farbu ukončenia čiary spojnice. Táto farba bude v prípade
nezhody so začiatočnou farbou použitá na vytvorenie farebného
prechodu pri kreslení spojnice. Metóda prijíma aj hodnotu
null
. V takom prípade bude farba ukončenia
spojnice prevzatá od cieľového robota.
farba
– farba ukončenia spojnice alebo null
public GRobot.Spojnica farbaKonca(Farebnosť objekt)
Určuje farbu ukončenia čiary spojnice prostredníctvom objektu,
ktorý implementuje rozhranie Farebnosť
.
Táto farba bude v prípade nezhody so začiatočnou farbou použitá
na vytvorenie farebného prechodu pri kreslení spojnice. Metóda
prijíma aj hodnotu null
. V takom prípade bude farba
ukončenia spojnice prevzatá od cieľového robota.
Príklad:
super
(350
,250
);skry
();// Definovanie konštánt – veľkosť robotov, veľkosti značiek a pomer
// medzi šírkou a výškou elipsy, ktorá bude tvarom robotov:
final
double
veľkosťRobota =25.0
;final
double
veľkosťZnačky =6.0
;final
double
pomer =2.5
;
// Definícia tvaru robotov:
KreslenieTvaru
tvar = r -> { r.elipsa
(pomer); r.text
(r.meno
()); };// Definícia prvého robota:
GRobot
štart =new
GRobot
() {{meno
("Štart"
);veľkosť
(veľkosťRobota);vlastnýTvar
(tvar);nekresliTvary
();farba
(modrá
);hrúbkaČiary
(3
);písmo
("Arial"
,28
);skoč
(-90
,75
); }};// Definícia druhého robota:
GRobot
koniec =new
GRobot
() {{meno
("Koniec"
);veľkosť
(veľkosťRobota);vlastnýTvar
(tvar);nekresliTvary
();farba
(purpurová
);hrúbkaČiary
(3
);písmo
("Arial"
,28
);skoč
(90
, -75
); }};
// Definícia spojnice:
Spojnica
spojnica = štart.spojnica
(koniec,// Orezanie spojnice:
štart.elipsa
(pomer), koniec.elipsa
(pomer)// Zrušenie predvolených farieb, aby sa
// zhodovali s farbami prepájaných robotov:
).farba
((Farba
)null
).farbaKonca
((Farba
)null
);
// Počiatočné čakanie tri sekundy:
Svet
.čakaj
(3.0
);// Zmena farieb a orientácie prvého robota:
štart.farba
(zelená
);Svet
.čakaj
(1.5
); štart.cieľováFarba
(žltá
);Svet
.čakaj
(1.5
); štart.vpravo
(30
);Svet
.čakaj
(1.5
);// Zmena farieb a orientácie druhého robota:
koniec.farba
(červená
);Svet
.čakaj
(1.5
); koniec.cieľováFarba
(oranžová
);Svet
.čakaj
(1.5
); koniec.vľavo
(30
);Svet
.čakaj
(1.5
);// Nastavenie vlastných farieb spojnice:
spojnica.farba
(svetlomodrá
.bledšia
()).farbaKonca
(tyrkysová
);
Výsledok:
Jednotlivé fázy vykonania programu – zmeny farebnosti v scéne so spojnicou postupujú od úplne automatického určenia farebnosti oboch koncov spojnice, cez farebné prispôsobenie robotov až po individuálne zafarbenie koncov samotnej spojnice.
objekt
– objekt určujúci farbu ukončenia spojnice alebo
null
public Shape orezanieZačiatku()
Vráti tvar orezania začiatku spojnice alebo null
,
ak orezanie nebolo definované. Orezanie začiatku (i konca)
čiary spojnice má význam vo viacerých prípadoch –
podrobnosti sú v opise metódy orezanieZačiatku(orezanieZačiatku)
.
null
public Shape orezanieZaciatku()
Alias pre orezanieZačiatku
.
public Shape orezanieKonca()
Vráti tvar orezania konca spojnice alebo null
,
ak orezanie nebolo definované. Orezanie konca (i začiatku)
čiary spojnice má význam vo viacerých prípadoch –
podrobnosti sú v opise metódy orezanieKonca(orezanieKonca
.
null
public GRobot.Spojnica orezanieZačiatku(Shape orezanieZačiatku)
Definuje tvar orezania začiatku spojnice. Ak je zadaná
hodnota null
, tak bude orezanie zrušené.
Orezanie začiatku (i konca) čiary spojnice má význam vo
viacerých prípadoch. Napríklad, ak chceme kresliť
priehľadný tvar robota a zároveň chceme, aby sa čiara
spojnice začínala na jeho hraniciach alebo potrebujeme
kresliť
značku začiatku čiary spojnice presne na hraniciach
tvaru robota. Tvar orezania by sme v týchto prípadoch
volili tak, aby vymedzoval hranice objektu, ktorý robot
reprezentuje svojím tvarom.
Pri definovaní orezania je dôležité vedieť niekoľko informácií, aby nevznikali chybné orezania alebo chybné umiestňovanie značiek spojníc. V tomto odseku sú vysvetľované príčiny a technické detaily (ak ich nepotrebujete alebo nechcete vedieť, môžete tento odsek preskočiť) a v nasledujúcich odsekoch sú opísané dôsledky a vyslovené odporúčania. Orezanie sa deje pomocou tvarov Javy, ktoré sa skladajú z menších častí (čiara, krivka, posunutie…) a sú za normálnych okolností „nepohyblivé.“ Na to, aby bolo orezanie použiteľné, je nevyhnutné tvary „rozhýbať.“ To sa deje pomocou geometrických transformácií. Každý tvar orezania je pri použití transformovaný podľa aktuálneho smeru a polohy robota umiestneného na prislúchajúcom zakončení spojnice. Do tohto procesu vstupuje ešte jeden fakt. Každý tvar vygenerovaný robotom je ešte pri jeho generovaní umiestnený a pootočený podľa aktuálnej polohy a smeru robota, ktorý ho vygeneroval. Preto, aby orezanie mohlo správne fungovať, musí byť každý tvar pri definovaní nového alebo aktualizovaní jestvujúceho orezania spojnice transformovaný do neutrálnej polohy a smeru. Objekt tvaru neobsahuje informáciu o tom, ktorý robot ho vygeneroval, ani o tom, akú polohu a orientáciu vtedy ten robot mal. Preto sú tvary transformované podľa toho robota, ktorý prislúcha súvisiacemu zakončeniu spojnice – začiatočné orezanie podľa začiatočného robota spojnice a koncové podľa koncového. Orezania by tiež mali pokrývať celú plochu tvaru robotov, inak sa môžu pri výslednom zobrazení spojnice kresliť nežiadúce úseky spojnice a tiež môže nastať chybné umiestnenie značiek spojnice. (Podrobnosti sú nižšie.)
Na základe informácií z predchádzajúceho odseku je
dôležité, aby tvar orezania začiatku spojnice bol
vygenerovaný začiatočným robotom (to jest robotom, z ktorého
spojnica vychádza) a tvar orezania konca koncovým robotom
(to jest tým, v ktorom spojnica končí). Na nasledujúcich
dvoch animovaných obrázkoch je znázornená spojnica, ktorá
nie je orezaná (vľavo) a spojnica, ktorá bola správne
orezaná (vpravo) – tvar orezania začiatku (A) bol
vygenerovaný začiatočným robotom ("A"
) a tvar
orezania konca (B) bol vygenerovaný koncovým (cieľovým)
robotom ("B"
).
Spojnica bez orezania. |
Správne orezaná spojnica. |
Nasledujúce dva animované obrázky ukazujú dve rôzne situácie nesprávneho orezania.
Na obrázku vľavo sú použité tri rozmery orezania, ktoré nie je zhodné s tvarom robota (neprekrýva sa s ním). V prvých dvoch prípadoch nezasahuje orezanie stred tvaru prislúchajúceho robota, čo je príčinou toho, že sa v určitých fázach animácie spojnica rozdelí na dve časti a to zároveň spôsobuje chybné zobrazenie značky spojnice (šípky). Orezanie je totiž zároveň používané pri zisťovaní umiestnenia krajných značiek spojnice. Používa sa pri tom operácia prieniku tvaru orezania s čiarou spojnice. Ak je prienik zložitý, tak nemôže byť správne určené umiestnenie značky spojnice.
Na obrázku vpravo bol na definovanie začiatočného orezania použitý koncový robot a naopak. Tvar orezania je za normálnych okolností neviditeľný. Aby bolo jasné, čo sa deje, sú tvary orezania na tomto obrázku zobrazené tenkými elipsami. Orezanie spojnice je správne v jednom jedinom okamihu animácie a to presne v tom, v ktorom bolo definované. Ak sa jeden z robotov pohne, orezanie prestane správne fungovať.
Nesprávne orezaná spojnica |
Nesprávne orezaná spojnica |
Príklad:
Tento príklad ukazuje spôsob definovania dvoch robotov
v tvare hviezdy prepojených správne orezanou spojnicou,
ktorej jeden koniec má definovanú značku v tvare šípky.
Oba roboty je možné presúvať a otáčať pomocou myši.
Na otáčanie robota je potrebné držať stlačený kláves
Shift
.
// Konštanta veľkostí robotov:
final
double
veľkosťRobota =66.0
;
// Kreslenie tvaru šípky, ktorá bude tvoriť značku spojnice:
final
KreslenieTvaru
šípka = r -> { r.vpravo
(20
); r.vpred
(12
);Poloha
p = r.poloha
(); r.zdvihniPero
(); r.vzad
(12
); r.vľavo
(40
); r.položPero
(); r.vpred
(12
); r.choďNa
(p); };// Definícia tvaru robotov:
final
KreslenieTvaru
tvar = r -> { r.hviezda
(); r.text
(r.meno
()); };
// Definícia robota s menom αlpha:
final
GRobot
α =new
GRobot
(); α.meno
("αlpha"
); α.hrúbkaČiary
(1.5
); α.veľkosť
(veľkosťRobota); α.vlastnýTvar
(tvar); α.nekresliTvary
(); α.zdvihniPero
();// Definícia robota s menom βeta:
final
GRobot
β =new
GRobot
(); β.meno
("βeta"
); β.hrúbkaČiary
(1.5
); β.veľkosť
(veľkosťRobota); β.vlastnýTvar
(tvar); β.nekresliTvary
(); β.zdvihniPero
();// Nastavenie počiatočných polôh robotov:
α.skoč
(110
, -55
); β.skoč
(-110
,55
);
// Definícia spojnice a jej orezania:
Spojnica
spojnica = α.spojnica
(β); spojnica.orezanieZačiatku
(α.hviezda
()); spojnica.orezanieKonca
(β.hviezda
());
// Nastavenie kreslenia značky začiatku:
spojnica.definujZnačkuZačiatku
(šípka);
// Definícia takej obsluhy udalostí, ktorá umožnení presúvanie robotov:
new
ObsluhaUdalostí
() {// Inštancia robota, na ktorú bolo kliknuté:
GRobot
r =null
;@
Overridepublic
void
klik
() {// Klik urobí to isté ako ťahanie myšou:
ťahanieMyšou
(); }@
Overridepublic
void
stlačenieTlačidlaMyši
() {// Zistenie, na ktorý robot bolo kliknuté a jeho aktivácia:
r =null
;if
(α.myšVHviezde
()) r = α;else
if
(β.myšVHviezde
()) r = β; }@
Overridepublic
void
ťahanieMyšou
() {if
(null
!= r &&ÚdajeUdalostí
.tlačidloMyši
(ĽAVÉ
)) {// Ak je aktívny jeden z robotov, tak ťahanie ľavého
// tlačidla myši so súčasným držaním klávesu Shift ho
// otočí na súradnice myši, v opačnom prípade je robot
// na súradnice myši presunutý:
if
(ÚdajeUdalostí
.myš
().isShiftDown
()) r.otočNaMyš
();else
r.skočNaMyš
(); } } };
Výsledok:
Jednoduché
presunutie jedného a potom druhého robota
(plátno je orezané a automatický návrat do
východiskovej polohy bol doprogramovaný,
aby
animácia plynule nadväzovala pri jej opakovaní).
orezanieZačiatku
– nový tvar orezania začiatku
spojnice alebo null
public GRobot.Spojnica orezanieZaciatku(Shape orezanieZačiatku)
Alias pre orezanieZačiatku
.
public GRobot.Spojnica orezanieKonca(Shape orezanieKonca)
Definuje tvar orezania konca spojnice. Ak je zadaná
hodnota null
, tak bude orezanie zrušené.
Orezanie konca (i začiatku) čiary spojnice má význam vo
viacerých prípadoch. Napríklad, ak chceme kresliť
priehľadný tvar cieľového robota a zároveň chceme, aby sa
čiara spojnice končila na jeho hraniciach alebo potrebujeme
kresliť
značku konca čiary spojnice presne na hraniciach tvaru
cieľového robota. Tvar orezania by sme v týchto prípadoch
volili tak, aby vymedzoval hranice objektu, ktorý svojím
tvarom reprezentuje cieľový robot.
Podrobnejšie informácie o orezaní konca aj začiatku
spojnice a príklad ich použitia sú v opise metódy
orezanieZačiatku
.
orezanieKonca
– nový tvar orezania konca
spojnice alebo null
public double vysunutieZačiatku()
Zistí aktuálne vysunutie začiatku spojnice od jej stredu.
Hodnota 0
znamená, že spojnica smeruje zo stredu
zdrojového robota (to jest zo súradníc jeho aktuálnej
polohy). Iná hodnota znamená vysunutie začiatku spojnice
v kladnom alebo zápornom smere, ktorý je súhlasný s kladným
alebo záporným smerom osi x, ak os y smeruje do koncového
bodu spojnice. Napríklad hodnota 10
znamená, že
začiatok spojnice je vysunutý od aktuálnych súradníc
zdroja o desať bodov smerom „doprava“ (ak považujeme smer
„dopredu“ za súhlasný so smerom do cieľa).
Znázornenie
kladného vysunutia začiatku spojnice – zelená čiara je
spojnica,
ktorá nie je vysunutá a červená znázorňuje
vysunutú spojnicu.
public double vysunutieZaciatku()
Alias pre vysunutieZačiatku
.
public double vysunutieKonca()
Zistí aktuálne vysunutie konca spojnice od jej stredu.
Hodnota 0
znamená, že spojnica smeruje do stredu
cieľového robota (to jesto na súradnice jeho aktuálnej
polohy). Iná hodnota znamená vysunutie konca spojnice
v kladnom alebo zápornom smere, ktorý je súhlasný s kladným
alebo záporným smerom začiatočného vysunutia spojnice.
Napríklad hodnota 10
znamená, že koniec spojnice
je vysunutý o desať bodov smerom „doprava,“ ak považujeme
smer „dopredu“ za súhlasný so smerom od zdroja do cieľa.
Znázornenie
kladného vysunutia konca spojnice – zelená čiara je
spojnica,
ktorá nie je vysunutá a červená znázorňuje
vysunutú spojnicu.
public GRobot.Spojnica vysunutieZačiatku(double vysunutie)
Umožňuje určiť vysunutie začiatočného bodu spojnice od jeho
stredu. Hodnota 0
znamená, že spojnica smeruje
presne zo stredu zdrojového robota (to jest zo súradníc
jeho aktuálnej polohy). Iná hodnota vysunie začiatok
spojnice v kladnom alebo zápornom smere, ktorý je súhlasný
s kladným alebo záporným smerom osi x, ak os y smeruje do
koncového bodu spojnice. Napríklad hodnota 10
znamená, že začiatok spojnice bude vysunutý od aktuálnych
súradníc zdroja o desať bodov smerom „doprava“ (ak
považujeme smer „dopredu“ za súhlasný so smerom od zdroja
do cieľa).
Znázornenie
kladného vysunutia začiatku spojnice – zelená čiara je
spojnica,
ktorá nie je vysunutá a červená znázorňuje
vysunutú spojnicu.
vysunutie
– nové vysunutie začiatku spojnice od
aktuálnej polohy začiatkočného robota; (kladné hodnoty
znamenajú vysunutie smerom „doprava“ vzhľadom na
orientáciu od zdroja do cieľa, záporné zase „doľava“)public GRobot.Spojnica vysunutieZaciatku(double vysunutie)
Alias pre vysunutieZačiatku
.
public GRobot.Spojnica vysunutieKonca(double vysunutie)
Umožňuje určiť vysunutie koncového bodu spojnice od jeho
stredu. Hodnota 0
znamená, že spojnica smeruje
presne do stredu cieľového robota (to jest na súradnice
jeho aktuálnej polohy). Iná hodnota vysunie koniec spojnice
v kladnom alebo zápornom smere, ktorý je súhlasný s kladným
alebo záporným smerom začiatočného vysunutia spojnice.
Napríklad hodnota 10
znamená, že koniec spojnice
bude vysunutý od aktuálnych súradníc cieľa o desať bodov
smerom „doprava,“ ak považujeme smer „dopredu“ za súhlasný
so smerom od zdroja do cieľa.
Znázornenie
kladného vysunutia konca spojnice – zelená čiara je
spojnica,
ktorá nie je vysunutá a červená znázorňuje
vysunutú spojnicu.
vysunutie
– nové vysunutie konca spojnice od
aktuálnej polohy koncového robota; kladné hodnoty
znamenajú vysunutie smerom „doprava“ vzhľadom na
orientáciu od zdroja do cieľa, záporné zase „doľava“public GRobot.Spojnica vysunutie(double vysunutie)
Umožňuje určiť vysunutie oboch koncov spojnice od stredov
prepájaných robotov súčasne. Hodnota 0
znamená,
že spojnica smeruje presne zo „stredu“ (z aktuálnej polohy)
zdrojového robota presne do „stredu“ (na súradnice
aktuálnej polohy) cieľového robota. Iná hodnota vysunie
začiatok spojnice v kladnom alebo zápornom smere, napríklad
hodnota 10
znamená, že spojnica bude vysunutá od
aktuálnych súradníc zdroja a cieľa o desať bodov smerom
„doprava,“ ak považujeme smer „dopredu“ za súhlasný so
smerom od zdroja do cieľa.
Znázornenie kladného
vysunutia začiatku (vľavo) a konca (vpravo) spojnice – zelená
čiara je spojnica, |
vysunutie
– nové vysunutie spojnice od aktuálnych polôh
prepájaných robotov; kladné hodnoty znamenajú vysunutie
smerom „doprava“ vzhľadom na orientáciu od zdroja do
cieľa, záporné zase „doľava“public boolean viditeľná()
Zistí, či je spojnica viditeľná alebo skrytá.
Poznámka: Táto metóda nezistí, či
je spojnica reálne vidno na plátne, iba vráti stav zobrazenia
určený metódami zobraz
a/alebo
skry
.
(Tým chce byť vysvetlené,
že ak je napríklad spojnica skrytá za nejakým objektom, tak
táto metóda to nezistí.)
true
ak je spojnica zobrazená, false
v opačnom prípadezobrazená()
,
skrytá()
,
ukáž()
,
zobraz()
,
skry()
,
ukáž(boolean)
,
zobraz(boolean)
public boolean viditelna()
Alias pre viditeľná
.
public boolean zobrazená()
Zistí, či je spojnica viditeľná alebo skrytá.
Poznámka: Táto metóda nezistí, či
je spojnica reálne vidno na plátne, iba vráti stav zobrazenia
určený metódami zobraz
a/alebo
skry
.
(Tým chce byť vysvetlené,
že ak je napríklad spojnica skrytá za nejakým objektom, tak
táto metóda to nezistí.)
true
ak je spojnica zobrazená, false
v opačnom prípadeviditeľná()
,
skrytá()
,
ukáž()
,
zobraz()
,
skry()
,
ukáž(boolean)
,
zobraz(boolean)
public boolean zobrazena()
Alias pre zobrazená
.
public boolean skrytá()
Zistí, či je spojnica viditeľná alebo skrytá.
Poznámka: Táto metóda nezistí, či
je spojnica reálne vidno na plátne, iba vráti stav zobrazenia
určený metódami zobraz
a/alebo
skry
.
(Tým chce byť vysvetlené,
že ak je napríklad spojnica skrytá za nejakým objektom, tak
táto metóda to nezistí.)
true
ak je spojnica skrytá, false
v opačnom prípadeviditeľná()
,
zobrazená()
,
ukáž()
,
zobraz()
,
skry()
,
ukáž(boolean)
,
zobraz(boolean)
public boolean skryta()
Alias pre skrytá
.
public void ukáž()
Zobrazí túto spojnicu. Alternatívou tejto metódy je
metóda zobraz
. Opačný efekt má metóda
skry
.
Poznámka: Táto metóda spúšťa automatické prekreslenie sveta, ale len v prípade, že sa stav viditeľnosti spojnice zmení.
viditeľná()
,
zobrazená()
,
skrytá()
,
zobraz()
,
skry()
,
ukáž(boolean)
,
zobraz(boolean)
public void ukaz()
Alias pre ukáž
.
public void zobraz()
Zobrazí túto spojnicu. Alternatívou tejto metódy je
metóda ukáž
. Opačný efekt má metóda
skry
.
Poznámka: Táto metóda spúšťa automatické prekreslenie sveta, ale len v prípade, že sa stav viditeľnosti spojnice zmení.
viditeľná()
,
zobrazená()
,
skrytá()
,
ukáž()
,
skry()
,
ukáž(boolean)
,
zobraz(boolean)
public void skry()
Skryje túto spojnicu. Opačný efekt majú metódy
ukáž
a zobraz
(ktoré
fungujú identicky – jedna je alternatívou druhej). Uvedené
metódy majú definované aj verzie s parametrom, ktorého
hodnota určuje, či má byť spojnica zobrazená alebo
skrytá.
Poznámka: Táto metóda spúšťa automatické prekreslenie sveta, ale len v prípade, že sa stav viditeľnosti spojnice zmení.
viditeľná()
,
zobrazená()
,
skrytá()
,
ukáž()
,
zobraz()
,
ukáž(boolean)
,
zobraz(boolean)
public void ukáž(boolean ukáž)
Zobrazí alebo skryje túto spojnicu podľa hodnoty
parametra ukáž
. Alternatívou tejto metódy je
metóda zobraz
. Okrem tejto
dvojice metód je definovaná trojica bezparametrických
metód: ukáž
, zobraz
a skry
.
Poznámka: Táto metóda spúšťa automatické prekreslenie sveta, ale len v prípade, že sa stav viditeľnosti spojnice zmení.
zobraz
– ak je hodnota tohto parametera rovná
true
a spojnica nie je viditeľná, tak bude
zobrazená;
ak je hodnota tohto parametera rovná false
a spojnica je viditeľná, tak bude skrytáviditeľná()
,
zobrazená()
,
skrytá()
,
ukáž()
,
zobraz()
,
skry()
,
zobraz(boolean)
public void ukaz(boolean ukáž)
Alias pre ukáž
.
public void zobraz(boolean zobraz)
Zobrazí alebo skryje túto spojnicu podľa hodnoty
parametra zobraz
. Alternatívou tejto metódy je
metóda ukáž
. Okrem tejto
dvojice metód je definovaná trojica bezparametrických
metód: ukáž
, zobraz
a skry
.
Poznámka: Táto metóda spúšťa automatické prekreslenie sveta, ale len v prípade, že sa stav viditeľnosti spojnice zmení.
zobraz
– ak je hodnota tohto parametera rovná
true
a spojnica nie je viditeľná, tak bude
zobrazená;
ak je hodnota tohto parametera rovná false
a spojnica je viditeľná, tak bude skrytáviditeľná()
,
zobrazená()
,
skrytá()
,
ukáž()
,
zobraz()
,
skry()
,
ukáž(boolean)