public class Plazma extends Object
Táto trieda generuje pixelovú simuláciu horiacej plazmy v zadanom obrázku. Obrázok, ktorý je povinným parametrom konštruktora bude aktivitou tejto triedy celoplošne prepisovaný, preto sa v podstate stáva nepoužiteľným na iné účely. (Teoreticky je možné upraviť obsah obrázka po každej aktivite generátora plazmy, prakticky však býva zväčša efektívne iné riešenie.)
Táto trieda v skutočnosti implementuje dej. Mala by sa teda skôr volať
„Plazmovanie“ (podobne ako trieda Vlnenie
), avšak také
sloveso slovenčina nerozoznáva, tak je pomenovaná podľa skupenstva, ktoré
je dynamické a neustále sa meniace. Primárnym účelom bolo simulovať oheň,
ale rôznymi úpravami parametrov simulácie sa dajú docieliť aj také efekty,
ktoré oheň nepripomínajú, preto trieda nesie ten názov, ktorý má.
Táto pixelová simulácia neustále prepočítava všetky pixely podľa hodnôt svojich susedov. Cieľom je napodobniť spotrebúvanie určitej „energie,“ ktoré je vizualizované prostredníctvom palety farieb v pridruženom obrázku. Dej sa dá ovplyvniť nasledujúcimi parametrami:
Okrem toho výsledok značne ovplyvňuje paleta, ktorej počet farieb je určený rozsahom hodnôt simulácie, ktorý sa dá sa určiť jednorazovo a to výhradne jedným z konštruktorov plazmového generátora.
Generátor je tiež programovateľný asynchrónne a to pomocou takzvaných zdrojov a deja, ktorými sa dajú docieliť rôzne dynamické efekty. Každý zdroj je časovo obmedzený a statický, ale dá sa buď naraz definovať séria vzájomne časovo posunutých zdrojov, alebo umiestniť pravidelné pridávanie nových zdrojov do deja (čo je v podstate „spätne volaná funkcia/metóda“ – angl. callback). Tým sa dá simulovať plazma s pohyblivým „zápalným zdrojom.“
Upozornenie: Je dôležité si uvedomiť, že po pripojení plazmy k obrázku nemá rolovanie alebo pretáčanie samotného obrázka zmysel, pretože jeho obsah je vždy úplne nahradený generátorom plazmy. Na pretáčanie obsahu takého obrázka má zmysel použiť iba metódy plazmy.
Upozornenie:
Každá inštancia pixelového generátora plazmy je predvolene aktívna,
ale žiadna z nich nikdy automaticky nespúšťa časovač sveta, od ktorého je automatizovaná
činnosť generátorov plazmy závislá.
(Keď hovoríme o automatizovanej činnosti, tak jednotlivé generátory môžu
fungovať aj nezávisle od časovača sveta,
ak sa o ich činnosť postará programátor – spúšťaním metódy
pracuj
.)
Upozornenie:
Trieda Plazma
vykonáva pixelovú simuláciu horenia
plazmy. Na to treba brať zreteľ najmä pri posudzovaní vplyvu jednotlivých
parametrov horenia na výsledok simulácie. Najmä v súvislosti s veličinou
ťahu. Akokoľvek veľká hodnota
ťahu nedokáže vynútiť zmenu pohybu plazmy špecifickým smerom viac než
o jeden pixel. Ďalšie podrobnosti nájdete v opise metódy váhyŤahu(ťahDoľava, ťahHore, ťahDoprava,
ťahDole)
.
Príklad:
Tento príklad ukazuje generovanie plazmy s predvolenými parametrami. Každé kliknutie striedavo pridá alebo odoberie dej simulátora (ktorý je principiálne tzv. „callback“ funkciou/metódou). Dej je definovaný veľmi jednoducho – generuje zdroj s polomerom 100 bodov v strede plátna.
import
knižnica.*;public
class
ZákladnáPlazmaextends
GRobot
{// Obrázok rozmermi totožný s veľkosťou plátna.
private
Obrázok
obrázok =new
Obrázok
(250
,250
);// Inštancia generátora plazmy prepojená na obrázok.
private
Plazma
plazma =new
Plazma
(obrázok);// Inštancia deja generujúca v strede obrázka plazmovú guľu
// s polomerom 100 bodov.
private
Runnable
dej = () -> plazma.pridajZdroj
(stred
,100
);
// Konštruktor.
private
ZákladnáPlazma() {super
(250
,250
);skry
();Svet
.spustiČasovač
(); }
// Reakcia na kliknutie myšou.
@
Overridepublic
void
klik
() {// Prepínač: Ak nie je definovaný dej plazmy, použije
// sa naša inštancia deja, inak sa zruší…
if
(null
== plazma.dej
()) plazma.dej
(dej);else
plazma.dej
(null
); }// Reakcia na časovač.
@
Overridepublic
void
tik
() {// Ak nie je svet prekreslený, tak sa prekreslí – v tomto
// príklade pozostáva prekreslenie len z vymazania grafiky
// podlahy a nakreslenia nášho obrázka spárovaného
// s generátorom plazmy na podlahu.
if
(Svet
.neboloPrekreslené
()) {podlaha
.vymažGrafiku
();podlaha
.obrázok
(obrázok);Svet
.prekresli
(); } }
// Hlavná metóda (vstupný bod programu).
public
static
void
main(String
[] args) {Svet
.použiKonfiguráciu
("ZákladnáPlazma.cfg"
);new
ZákladnáPlazma(); } }
Výsledok:
Ukážka
zapnutia a vypnutia deja generujúceho základnú plazmu.
Príklad:
Tento príklad upravuje viacero parametrov simulácie. Dej je tiež definovaný komplikovanejšie – generuje zdroje sledujúce polohu kurzora myši.
import
knižnica.*;public
class
Plamienokextends
GRobot
{// Obrázok rozmermi totožný s veľkosťou plátna.
private
Obrázok
obrázok =new
Obrázok
(250
,250
);// Inštancia generátora plazmy prepojená na obrázok.
private
Plazma
plazma =new
Plazma
(obrázok);// Generátory pílových číselných radov na jemnú úpravu polohy plamienka.
private
Rad
radX =new
Rad
(-5
,5
,2
);private
Rad
radY =new
Rad
(-1
,1
);// Inštancia deja generujúca plamienok podľa aktuálnej polohy myši.
private
Runnable
dej = () -> {Bod
myš =ÚdajeUdalostí
.polohaMyši
();for
(int
i =0
; i <1
; ++i) {int
y = radY.daj
();for
(int
j =0
; j <16
; ++j) {int
x = radX.daj
();// Pridanie ďalšieho zdroja:
plazma.pridajZdroj
(// Poloha:
myš.polohaX
() + x, myš.polohaY
() + y + j *3
, (10
– (j /2
)) *2
,// rozsah
8
,24
,// hranice
4
, i *8
+ j);// trvanie a oneskorenie
} } };
// Konštruktor.
private
Plamienok() {super
(250
,250
);// Nastavenie vlastnej palety generátora plazmy:
plazma.nastavPaletu
(new
Farba
[] {// Svetložltá, oranžová, červená a čierna
// (s postupne klesajúcou priehľadnosťou):
new
Farba
(255
,255
,128
),new
Farba
(255
,128
,0
,192
),new
Farba
(255
,0
,0
,32
),new
Farba
(0
,0
,0
,0
)});// Úprava predvoleného kroku deja:
plazma.krok
(8
);skry
();Svet
.spustiČasovač
(); }
// Reakcia na kliknutie myšou.
@
Overridepublic
void
klik
() {// Prepínač: Ak nie je definovaný dej plazmy, použije
// sa naša inštancia deja, inak sa zruší…
if
(null
== plazma.dej
()) plazma.dej
(dej);else
plazma.dej
(null
); }// Reakcia na ťahanie myšou.
@
Overridepublic
void
ťahanieMyšou
() {// Ak je dej aktívny, tak sa vykoná pri každej zmene polohy kurzora
// myši (počas držania stlačeného tlačidla myši, t. j. počas ťahania
// myšou). Spôsobí to rozohnenie mohutnejších plameňov.
if
(null
!= plazma.dej
()) dej.run
(); }// Reakcia na časovač.
@
Overridepublic
void
tik
() {// Ak nie je svet prekreslený, tak sa prekreslí – v tomto
// príklade pozostáva prekreslenie len z vymazania grafiky
// podlahy a nakreslenia nášho obrázka spárovaného
// s generátorom plazmy na podlahu.
if
(Svet
.neboloPrekreslené
()) {podlaha
.vymažGrafiku
();podlaha
.obrázok
(obrázok);Svet
.prekresli
(); } }
// Hlavná metóda (vstupný bod programu).
public
static
void
main(String
[] args) {Svet
.použiKonfiguráciu
("Plamienok.cfg"
);new
Plamienok(); } }
Výsledok:
Ukážka horiaceho plamienka
pri nemeniacej sa polohe kurzora myši.
Poznámka: Táto trieda používa na generovanie pseudonáhodných čísiel implementáciu Mersennovho twistera z CERNu z roku 1999. Uvedená implementácia bola použitá aj v rámci procesu implementácie vlastnej optimalizovanej verzie generátora pseudonáhodných čísiel s binomickým rozložením. (Pozri zdroj nižšie.)
Súvisiaci zdroj:
Ďalšie zdroje:
Môžeme povedať, že algoritmus použitý v triede Plazma
je
zovšeobecnením optimalizovanej verzie generátora ohňa dostupného tu:
Uvdedený zdroj obsahuje základnú neoptimalizovanú verziu vhodnú na samoštúdium (pretože veci príliš nekomplikuje). Verzia algoritmu použitá v tejto triede ňou bola inšpirovaná, ale výsledná implementácia je odlišná.
Konštruktor a opis |
---|
Plazma(Obrázok obrázok)
Konštruktor plazmy prijímajúci obrázok, do ktorého bude
prekresľovaný výsledok tohto generátora plazmy.
|
Plazma(Obrázok obrázok,
int rozsah)
Alternatívny konštruktor umožňujúci nastavenie rozsahu hodnôt
tejto inštancie simulátora.
|
Modifikátor a typ | Metóda a opis |
---|---|
void |
aktivita()
Táto metóda je predvolene prázdna.
|
boolean |
aktivny()
Alias pre
aktívny . |
boolean |
aktívny()
Overí, či je tento generátor aktívny.
|
void |
aktivuj()
Aktivuje tento pixelový generátor plazmy.
|
Zoznam<Farba> |
dajPaletu()
Vráti aktuálny zoznam farieb palety používanej na kreslenie plazmy
tejto inštancie simulátora.
|
void |
deaktivuj()
Deaktivuje tento pixelový generátor plazmy.
|
Runnable |
dej()
Vráti aktuálna inštanciu príkazov deja
(
Runnable ). |
void |
dej(Runnable vykonať)
Nastaví novú inštanciu príkazov deja
(
Runnable ) so zachovaním aktuálneho kroku deja. |
void |
dej(Runnable vykonať,
int krok)
Nastaví novú inštanciu príkazov deja
(
Runnable ) a nový krok deja. |
int |
dohorenie()
|
void |
dohorenie(int dohorenie)
|
int |
krok()
|
void |
krok(int krok)
|
void |
nastavPaletu(Color[] farby)
Vygeneruje novú paletu farieb pre jednotlivé úrovne intenzít
plazmy podľa skupiny zadaných (kľúčových) farieb s rovnomerným
rozmiestnením.
|
void |
nastavPaletu(Color[] farby,
int[] zarážky)
Vygeneruje novú paletu farieb pre jednotlivé úrovne intenzít
plazmy podľa skupiny zadaných (kľúčových) farieb s možnosťou
ovplyvnenia ich umiestnenia vo výslednej palete zarážkami.
|
boolean |
neaktivny()
Alias pre
neaktívny . |
boolean |
neaktívny()
Overí, či je tento generátor neaktívny.
|
void |
pasivita()
Táto metóda je predvolene prázdna.
|
boolean |
pasivny()
Alias pre
neaktívny . |
boolean |
pasívny()
Alias pre
neaktívny . |
void |
pracuj()
Táto metóda je vykonávaná automaticky pri každom tiku
časovača sveta.
|
void |
pretoc(double Δx,
double Δy)
Alias pre
pretoč . |
void |
pretoč(double Δx,
double Δy)
Pretočí mapu plazmy o zadaný počet bodov v horizontálnom
a/alebo vertikálnom smere.
|
void |
pridajZdroj(double x,
double y,
double polomer)
Pridá nový zdroj plazmy.
|
void |
pridajZdroj(double x,
double y,
double polomer,
int rozsah)
Pridá nový zdroj plazmy.
|
void |
pridajZdroj(double x,
double y,
double polomer,
int dolnáHranica,
int hornáHranica)
Pridá nový zdroj plazmy.
|
void |
pridajZdroj(double x,
double y,
double polomer,
int dolnáHranica,
int hornáHranica,
int trvanie)
Pridá nový zdroj plazmy.
|
void |
pridajZdroj(double x,
double y,
double polomer,
int dolnáHranica,
int hornáHranica,
int trvanie,
int oneskorenie)
Pridá nový zdroj plazmy.
|
void |
pridajZdroj(Poloha poloha,
double polomer)
Pridá nový zdroj plazmy.
|
void |
pridajZdroj(Poloha poloha,
double polomer,
int rozsah)
Pridá nový zdroj plazmy.
|
void |
pridajZdroj(Poloha poloha,
double polomer,
int dolnáHranica,
int hornáHranica)
Pridá nový zdroj plazmy.
|
void |
pridajZdroj(Poloha poloha,
double polomer,
int dolnáHranica,
int hornáHranica,
int trvanie)
Pridá nový zdroj plazmy.
|
void |
pridajZdroj(Poloha poloha,
double polomer,
int dolnáHranica,
int hornáHranica,
int trvanie,
int oneskorenie)
Pridá nový zdroj plazmy.
|
void |
roluj(double Δx,
double Δy)
Posunie mapu plazmy o zadaný počet bodov v horizontálnom
a/alebo vertikálnom smere.
|
int |
utlm()
Alias pre
útlm . |
int |
útlm()
|
void |
utlm(int útlm)
Alias pre
útlm . |
void |
útlm(int útlm)
|
int[] |
vahyTahu()
Alias pre
váhyŤahu . |
int[] |
váhyŤahu()
Vráti štvoricu koeficientov váh ťahu, ktoré sú ústrednou súčasťou
vzorca na výpočet plazmy.
|
void |
vahyTahu(double x,
double y)
Alias pre
váhyŤahu . |
void |
váhyŤahu(double x,
double y)
Alternatívny spôsob nastavenia smerových váh ťahu plazmy.
|
void |
vahyTahu(int[] váhy)
Alias pre
váhyŤahu . |
void |
váhyŤahu(int[] váhy)
Nastaví štvoricu koeficientov váh ťahu.
|
void |
vahyTahu(int ťahDoľava,
int ťahHore,
int ťahDoprava,
int ťahDole)
Alias pre
váhyŤahu . |
void |
váhyŤahu(int ťahDoľava,
int ťahHore,
int ťahDoprava,
int ťahDole)
Nastaví nové váhy smerových koeficientov ťahu v pixelovej simulácii
plazmy.
|
void |
vahyTahu(Poloha bod)
Alias pre
váhyŤahu . |
void |
váhyŤahu(Poloha bod)
Alternatívny spôsob nastavenia smerových váh ťahu plazmy.
|
public Plazma(Obrázok obrázok)
Konštruktor plazmy prijímajúci obrázok, do ktorého bude prekresľovaný výsledok tohto generátora plazmy. Obrázok je povinným parametrom konštruktora. Po priradení k tomuto generátoru bude obsah obrázka aktivitou tejto triedy celoplošne prepisovaný, preto sa jeho inštancia stáva v podstate nepoužiteľnou na iné účely.
Upozornenie: Je dôležité si uvedomiť, že pri pripojení plazmy k obrázku nemá rolovanie alebo pretáčanie samotného obrázka zmysel, pretože jeho obsah je vždy úplne nahradený generátorom plazmy. Na pretáčanie obsahu takého obrázka má zmysel použiť iba metódy plazmy.
Poznámka: Generátor je predvolene aktívny, ale žiadna inštancia plazmy nikdy automaticky nespúšťa časovač sveta, od ktorého je automatizovaná činnosť generátora plazmy závislá. (Hovoríme o automatizovanej činnosti. Generátor môže fungovať aj nezávisle od toho, ak sa o jeho činnosť postará programátor.)
obrázok
– inštancia obrázka, ktorá bude spárovaná s týmto
pixelovým generátorom plazmyPlazma(Obrázok, int)
public Plazma(Obrázok obrázok, int rozsah)
Alternatívny konštruktor umožňujúci nastavenie rozsahu hodnôt
tejto inštancie simulátora. Parameter rozsah
umožňuje určiť
počet dovolených hodnôt používaných v simulátore na vyjadrenie
intenzity plazmy. Predvolená hodnota je 256 hodnôt, čo zodpovedá
číselnému rozsahu ⟨0; 255⟩. Počet hodnôt zároveň určuje počet farieb
palety (pozri metódu nastavPaletu
), pričom pri veľkých rozsahoch môžu byť viaceré položky
palety (farby) idúce v rade za sebou identické. (Čiže rozsah neslúži
na určenie výsledného počtu farieb, ale na ovplyvnenie výpočtu/činnosti
simulátora.)
Ďalšie informácie o konštrukcii simulátora nájdete v opise
konštruktora Plazma(obrázok)
.
obrázok
– inštancia obrázka, ktorá bude spárovaná s týmto
pixelovým generátorom plazmyrozsah
– rozsah hodnôt intenzity plazmy v pixelovej simuláciiPlazma(Obrázok)
public void nastavPaletu(Color[] farby, int[] zarážky)
Vygeneruje novú paletu farieb pre jednotlivé úrovne intenzít plazmy podľa skupiny zadaných (kľúčových) farieb s možnosťou ovplyvnenia ich umiestnenia vo výslednej palete zarážkami. Prvý prvok poľa určuje farbu zodpovedajúcu najvyššej intenzite plazmy.
Ak je pole farieb prázdne, tak metóda použije predvolené kľúčové farby (a vypočíta lineárny farebný prechod medzi nimi): sýtočervenú úplne nepriehľadnú a úplne priehľadnú čiernu. Ak pole obsahuje iba jeden prvok, tak ten sa stane prvou kľúčovou farbou (zodpovedajúcou najvyššej intenzite plazmy) a druhá kľúčová farba bude (podobne ako v predchádzajúcom prípade) úplne čierna priehľadná farba. Pri inom počte farieb bude paleta vygenerovaná podľa nich. Je vysoko odporúčané, aby posledná farba bola úplne transparentná (priehľadná).
Ak nie sú zadané žiadne zarážky, farby budú vo výslednej palete rozmiestnené rovnomerne (a priestor medzi nimi bude vyplnený lineárne interpolovanými farbami). Zadanie zarážok ovplyvní polohu kľúčových farieb ležiacich medzi prvou a poslednou farbou. Z toho vyplýva, že počet využiteľných zarážok je o dve menší, než počet zadaných farieb. Poloha chýbajúcich zarážok je určená (vypočítaná) automaticky. Nadbytočné zarážky sú ignorované.
Nasledujúci obrázok ukazuje predvolenú paletu farieb nakreslenú na bielom pozadí. Predvolená paleta prechádza z úplne nepriehľadnej červenej farby do úplne priehľadnej čiernej farby.
Predvolená paleta plazmy (pričom biela farba vľavo
vznikla nakreslením úplne priehľadnej čiernej farby na biele
pozadie).
Na ďalšom obrázku je zobrazená paleta vygenerovaná z týchto kľúčových farieb: červená, oranžová, žltá, zelená, bledomodrá, tmavomodrá a biela, pričom ich priehľadnosť postupne klesá. Toto je úplný príkaz:
// (Predpokladáme, že inštancia plazmy bola vytvorená skôr.)
plazma.nastavPaletu
(new
Farba
[] {// Dúha.
new
Farba
(0xC0_f60000
,true
),new
Farba
(0xA0_ffbc00
,true
),new
Farba
(0x80_ffee00
,true
),new
Farba
(0x60_4de94c
,true
),new
Farba
(0x40_3783ff
,true
),new
Farba
(0x20_4815aa
,true
),new
Farba
(0x00_ffffff
,true
) });
Dúhová paleta plazmy (pričom priehľadnosť farieb
klesá smerom sprava doľava).
farby
– pole farieb, ktoré majú byť použité vo výslednej paletezarážky
– nepovinné pole zarážok, ktorými sa dá ovplyvniť poloha
zadaných (kľúčových) farieb vo výslednej paletenastavPaletu(Color[])
,
dajPaletu()
public void nastavPaletu(Color[] farby)
Vygeneruje novú paletu farieb pre jednotlivé úrovne intenzít
plazmy podľa skupiny zadaných (kľúčových) farieb s rovnomerným
rozmiestnením. (Prvý prvok poľa určuje farbu zodpovedajúcu najvyššej
intenzite plazmy. Pozri aj metódu nastavPaletu(farby, zarážky)
.)
farby
– pole farieb, ktoré majú byť použité vo výslednej paletenastavPaletu(Color[], int[])
,
dajPaletu()
public Zoznam<Farba> dajPaletu()
Vráti aktuálny zoznam farieb palety používanej na kreslenie plazmy tejto inštancie simulátora. Akoukoľvek úpravou vráteného zoznamu nie je možné ovplyvniť skutočnú (vnútornú) paletu tohto simulátora.
nastavPaletu(Color[], int[])
,
nastavPaletu(Color[])
public int[] váhyŤahu()
Vráti štvoricu koeficientov váh ťahu, ktoré sú ústrednou súčasťou
vzorca na výpočet plazmy. Vrátené pole obsahuje štvoricu koeficientov
smerových ťahov v tomto poradí: doľava, hore, doprava a dole. Viac
podrobností o váhach ťahu je uvedených v opise metódy váhyŤahu(ťahDoľava, ťahHore,
ťahDoprava, ťahDole)
(dôležité je najmä upozornenie, ktoré sa
nachádza v opise uvedenej metódy).
váhyŤahu(int, int, int, int)
,
váhyŤahu(double, double)
,
váhyŤahu(Poloha)
,
váhyŤahu(int[])
public int[] vahyTahu()
Alias pre váhyŤahu
.
public void váhyŤahu(int ťahDoľava, int ťahHore, int ťahDoprava, int ťahDole)
Nastaví nové váhy smerových koeficientov ťahu v pixelovej simulácii plazmy.
Upozornenie:
Trieda Plazma
vykonáva pixelovú simuláciu
a ľubovoľne veľká hodnota ťahu nedokáže vynútiť zmenu pohybu plazmy
viac než o jeden pixel. Koeficienty ťahu sú len váhy, ktoré ovplvňujú
to, ktorým smerom počas simulovania sa bude mať plazma tendenciu viac
pohybovať. Rýchlejší pohyb plazmy sa dá docieliť len pohyblivým
zdrojom plazmy. (Pozri napríklad opis metódy pridajZdroj
alebo príklady v hlavnom opise tejto triedy.)
Tieto váhové koeficienty sú vo vzorci simulácie použité na ovplyvnenie intenzít plazmy v jednotlivých bodoch simulácie podľa hodnôt ich susediacich bodov. Podľa toho, ktorá váha má vyššiu hodnotu sa plazma má tendenciu pohybovať jej smerom.
Poznámka: Štvorica koeficientov ťahu je len jednou veličinou ovplyvňujúcou výsledok simulácie. Ďalšími dvomi sú dohorenie a útlm.
Príklad:
import
knižnica.*;public
class
SmerováPlazmaextends
GRobot
{// Obrázok rozmermi totožný s veľkosťou plátna.
private
Obrázok
obrázok =new
Obrázok
(250
,250
);// Inštancia generátora plazmy prepojená na obrázok.
private
Plazma
plazma =new
Plazma
(obrázok);// Inštancia deja generujúca v strede obrázka plazmovú guľôčku
// s polomerom 10 bodov.
private
Runnable
dej = () -> plazma.pridajZdroj
(stred
,10
);
// Konštruktor.
private
SmerováPlazma() {super
(250
,250
);skry
();Svet
.spustiČasovač
(); }
// Reakcia na kliknutie myšou.
@
Overridepublic
void
klik
() {// Prepínač: Ak nie je definovaný dej plazmy, použije
// sa naša inštancia deja, inak sa zruší…
if
(null
== plazma.dej
()) plazma.dej
(dej);else
plazma.dej
(null
); }// Reakcia na ťahanie myšou.
@
Overridepublic
void
ťahanieMyšou
() {// Ťah sa nastaví podľa polohy myši (ktorá je teraz zároveň
// smerovým vektorom, keďže zdroj plazmy je umiestnený
// v strede plátna).
if
(null
!= plazma.dej
()) plazma.váhyŤahu
(ÚdajeUdalostí
.polohaMyši
()); }// Reakcia na časovač.
@
Overridepublic
void
tik
() {// Ak nie je svet prekreslený, tak sa prekreslí – v tomto
// príklade pozostáva prekreslenie len z vymazania grafiky
// podlahy a nakreslenia nášho obrázka spárovaného
// s generátorom plazmy na podlahu.
if
(Svet
.neboloPrekreslené
()) {podlaha
.vymažGrafiku
();podlaha
.obrázok
(obrázok);// Výpis aktuálneho nastavenia váh vo vrchnej časti plátna:
skočNa
(0
,100
);int
ťah[] = plazma.váhyŤahu
();text
(ťah[0
] +", "
+ ťah[1
] +", "
+ ťah[2
] +", "
+ ťah[3
]);Svet
.prekresli
(); } }
// Hlavná metóda (vstupný bod programu).
public
static
void
main(String
[] args) {Svet
.použiKonfiguráciu
("SmerováPlazma.cfg"
);new
SmerováPlazma(); } }
Výsledok:
Ukážka
zmeny smerovania horenia plazmy pri pohybe kurzora myši približne po
kruhovej dráhe okolo stredu.
(Krížik znázorňujúci kurzor
myši je dokreslený.)
ťahDoľava
– hodnota koeficientu váhy ťahu smerom doľavaťahHore
– hodnota koeficientu váhy ťahu smerom horeťahDoprava
– hodnota koeficientu váhy ťahu smerom dopravaťahDole
– hodnota koeficientu váhy ťahu smerom doleváhyŤahu()
,
váhyŤahu(double, double)
,
váhyŤahu(Poloha)
,
váhyŤahu(int[])
public void vahyTahu(int ťahDoľava, int ťahHore, int ťahDoprava, int ťahDole)
Alias pre váhyŤahu
.
public void váhyŤahu(double x, double y)
Alternatívny spôsob nastavenia smerových váh ťahu plazmy. Zadané súradnice sú považované za súradnice kvázi smerového vektora, ktorý bude použitý na nastavenie váh takto:
Viac podrobností o váhach ťahu je uvedených v opise metódy
váhyŤahu(ťahDoľava, ťahHore,
ťahDoprava, ťahDole)
(dôležité je najmä upozornenie, ktoré sa
nachádza v opise uvedenej metódy).
x
– x-ová súradnica kvázi smerového vektora určujúceho nové
nastavenie váh ťahu (kvázi kosínus smeru)y
– y-ová súradnica kvázi smerového vektora určujúceho nové
nastavenie váh ťahu (kvázi sínus smeru)váhyŤahu()
,
váhyŤahu(int, int, int, int)
,
váhyŤahu(Poloha)
,
váhyŤahu(int[])
public void vahyTahu(double x, double y)
Alias pre váhyŤahu
.
public void váhyŤahu(Poloha bod)
Alternatívny spôsob nastavenia smerových váh ťahu plazmy. Zadaný
bod je spracovaný rovnako ako súradnice kvázi smerového vektora
zadávané v parametroch metódy váhyŤahu(x, y)
(podrobnosti pozri v jej opise).
bod
– kvázi smerový vektor určujúci nové nastavenie váh ťahu
(pozri aj opis metódy váhyŤahu(x, y)
)váhyŤahu()
,
váhyŤahu(int, int, int, int)
,
váhyŤahu(double, double)
,
váhyŤahu(int[])
public void váhyŤahu(int[] váhy)
Nastaví štvoricu koeficientov váh ťahu. Metóda očakáva v zadanom
poli štvoricu smerových koeficientov ťahov v nasledujúcom poradí:
doľava, hore, doprava a dole. Prípadné chýbajúce hodnoty (napr. pri
nedostatočnej dĺžke poľa) nie sú nastavené. Viac podrobností o váhach
ťahu je uvedených v opise metódy váhyŤahu(ťahDoľava, ťahHore, ťahDoprava, ťahDole)
(dôležité je najmä
upozornenie, ktoré sa nachádza v opise uvedenej metódy).
váhy
– pole so štvoricou smerových koeficientov ťahov v poradí:
doľava, hore, doprava, doleváhyŤahu()
,
váhyŤahu(int, int, int, int)
,
váhyŤahu(double, double)
,
váhyŤahu(Poloha)
public void vahyTahu(int[] váhy)
Alias pre váhyŤahu
.
public int dohorenie()
Zistí aktuálnu hodnotu dohorenia plazmy.
Podrobnosti o tejto vlastnosti sú uvedené v opise metódy dohorenie
.
dohorenie(int)
,
útlm()
public void dohorenie(int dohorenie)
Nastaví novú hodnotu dohorenia plazmy.
Táto vlastnosť určuje zmiernenie (spomalenie) horenia plazmy
v pomere k váham. (Pozri váhyŤahu(ťahDoľava, ťahHore, ťahDoprava, ťahDole)
.) Čím sú hodnoty
váh vyššie, tým menší vplyv má jednotkové dohorenie na výslednú
rýchlosť horenia.
(Algoritmicky je táto vlastnosť umiestnená do deliteľa/menovateľa
vzorca používaného na výpočet simulácie horenia plazmy.)
Poznámka: Dohorenie je len jednou z hlavných veličín ovplyvňujúcich výsledok simulácie. Ďalšími dvomi sú ťah a útlm
dohorenie
– nová hodnota dohoreniadohorenie()
,
útlm(int)
public int útlm()
Zistí aktuálnu hodnotu útlmu plazmy.
Podrobnosti o tejto vlastnosti sú uvedené v opise metódy útlm
.
útlm(int)
,
dohorenie()
public int utlm()
Alias pre útlm
.
public void útlm(int útlm)
Nastaví novú hodnotu útlmu plazmy. Táto vlastnosť paušálne (celoplošne) tlmí intenzitu plameňov plazmy počas simulácie horenia, čím proces horenia urýchľuje. (Algoritmicky je táto vlastnosť realizovaná ako odčítanec intenzity vo vzorci používanom pri výpočte simulácie horenia plazmy.)
Poznámka: Útlm je len jednou z hlavných veličín ovplyvňujúcich výsledok simulácie. Ďalšími dvomi sú ťah a dohorenie
útlm
– nová hodnota útlmuútlm()
,
dohorenie(int)
public void utlm(int útlm)
Alias pre útlm
.
public boolean aktívny()
Overí, či je tento generátor aktívny. Vracia presne opačnú
informáciu ako metóda neaktívny
(resp. metóda
pasívny
). Generátor je predvolene aktívny, ale
žiadna inštancia plazmy nikdy automaticky nespúšťa časovač sveta, od ktorého je automatizovaná
činnosť generátora plazmy závislá.
Ak je generátor aktívny, tak metóda pracuj
automaticky spúšťa reakciu aktivita
.
V opačnom prípade spúšťa reakciu pasivita
.
Poznámka:
Podrobnosti o aktivite sú v opisoch metód: aktivita()
/pasivita()
a pracuj()
.
true
ak je generátor aktívny, inak false
aktívny()
,
neaktívny()
,
pasívny()
,
aktivuj()
,
deaktivuj()
,
aktivita()
,
pasivita()
,
pracuj()
,
krok()
,
dej()
public boolean aktivny()
Alias pre aktívny
.
public boolean neaktívny()
Overí, či je tento generátor neaktívny. Vracia presne opačnú
informáciu ako metóda aktívny
. Generátor je
predvolene aktívny, ale žiadna inštancia plazmy nikdy automaticky
nespúšťa časovač sveta, od ktorého
je automatizovaná činnosť generátora plazmy závislá.
Ak je generátor aktívny, tak metóda pracuj
automaticky spúšťa reakciu aktivita
.
V opačnom prípade spúšťa reakciu pasivita
.
Poznámka:
Podrobnosti o aktivite sú v opisoch metód: aktivita()
/pasivita()
a pracuj()
.
true
ak nie je generátor aktívny, inak
false
aktívny()
,
neaktívny()
,
pasívny()
,
aktivuj()
,
deaktivuj()
,
aktivita()
,
pasivita()
,
pracuj()
,
krok()
,
dej()
public boolean neaktivny()
Alias pre neaktívny
.
public boolean pasívny()
Alias pre neaktívny
.
public boolean pasivny()
Alias pre neaktívny
.
public void aktivuj()
Aktivuje tento pixelový generátor plazmy.
Poznámka:
Podrobnosti o aktivite sú v opisoch metód: aktivita()
/pasivita()
a pracuj()
.
deaktivuj()
,
aktívny()
,
neaktívny()
,
pasívny()
,
aktivita()
,
pasivita()
,
pracuj()
,
krok()
,
dej()
public void deaktivuj()
Deaktivuje tento pixelový generátor plazmy.
Poznámka:
Podrobnosti o aktivite sú v opisoch metód: aktivita()
/pasivita()
a pracuj()
.
aktivuj()
,
aktívny()
,
neaktívny()
,
pasívny()
,
aktivita()
,
pasivita()
,
pracuj()
,
krok()
,
dej()
public Runnable dej()
Vráti aktuálna inštanciu príkazov deja
(Runnable
). Ďalšie podrobnosti o deji sú v opise
metódy dej(vykonať)
.
Runnable
dej(Runnable)
,
dej(Runnable, int)
,
krok()
,
pracuj()
,
aktivita()
,
pasivita()
public void dej(Runnable vykonať)
Nastaví novú inštanciu príkazov deja
(Runnable
) so zachovaním aktuálneho kroku deja.
Príkazy sú spúšťané len v stave aktívneho
generátora. Ak je krok deja menší, než 1
, príkazy deja
nebudú vykonávané. Rovnako hodnota null
inštancie
príkazov v parametri vykonať
spôsobí zastavenie
vykonávania príkazov deja.
Inou možnosťou ovplyvňovania správania sa generátora plazmy je
odvodenie novej triedy od tejto triedy a prekrytie metódy aktivita
, prípadne aj pasivita
.
Tie sú potom automaticky spúšťané podľa toho, či je generátor
aktívny alebo pasívny.
Je to podobný princíp ako je implementovaný v triede GRobot
– GRobot.aktivita()
.
Poznámka: Príkazy deja sú vykonávané tesne pred prepočtom údajov generátora plazmy a príkazy aktivity sú vykonané tesne po prepočte a prekreslení obsahu obrázka spárovaného s plazmou).
vykonať
– inštancia Runnable
s príkazmi dejadej()
,
dej(Runnable, int)
,
krok()
,
pracuj()
,
aktivita()
,
pasivita()
public void dej(Runnable vykonať, int krok)
Nastaví novú inštanciu príkazov deja
(Runnable
) a nový krok deja. Podrobnosti o deji
sú v opise metódy dej(vykonať)
.
vykonať
– nová inštancia príkazov deja (pozri dej
)krok
– nová hodnota kroku deja (pozri krok
)dej()
,
dej(Runnable)
,
krok()
,
pracuj()
,
aktivita()
,
pasivita()
public int krok()
Vráti aktuálnu hodnotu kroku deja. Ide o počet prepočtov simulátora plazmy, po ktorom sa majú vykonať príkazy deja (ak sú definované).
krok(int)
,
dej()
,
pracuj()
,
aktivita()
,
pasivita()
public void krok(int krok)
Nastaví novú hodnotu kroku deja. Krok je
počet prepočtov (pozri aj metódu pracuj
) simulátora
plazmy, po ktorom sa majú vykonať príkazy deja (ak sú definované a ak
je generátor plazmy v aktívnom stave). Ak je
krok deja menší, než 1
, príkazy deja nebudú vykonávané.
(Rovnako hodnota null
inštancie príkazov v parametri
vykonať
niektorej z metód na nastavenie deja (napr.
dej(vykonať)
) spôsobí zastavenie vykonávania
príkazov deja.)
Poznámka: Príkazy deja sú vykonávané tesne pred prepočtom údajov generátora plazmy a príkazy aktivity sú vykonané tesne po prepočte a prekreslení obsahu obrázka spárovaného s plazmou).
krok
– nová hodnota kroku dejakrok()
,
dej()
,
pracuj()
,
aktivita()
,
pasivita()
public void pridajZdroj(double x, double y, double polomer, int dolnáHranica, int hornáHranica, int trvanie, int oneskorenie)
Pridá nový zdroj plazmy. Zdroj plazmy zvyšuje intenzitu plazmy
v kruhovej oblasti so stredom na zadaných súradniciach a so zadaným
polomerom. Výsledný nárast intenzity v jednotlivých bodoch zdroja
závisí od dvoch veličín: vzdialenosť bodu od stredu zdroja a rozsah
hraníc (parametre dolnáHranica
a hornáHranica
), ktorý
je vstupom generátora pseudonáhodných čísiel. Trvanie generovania je
určené v počte tikov, rovnako ako prípadné oneskorenie začatia
generovania.
Ďalšie verzie tejto metódy majú vynechaný jeden alebo viacero z nasledujúcich parametrov a na ich miesto sú dosadené nasledujúce hodnoty (uvedené v tom poradí, ktoré platí pre túto verziu metódy):
dolnáHranica
: 0
, pričom parameter
hornáHranica
môže byť stále prítomný, ale v tom prípade je
premenovaný na rozsah
.hornáHranica
(musí absentovať aj parameter dolnáHranica
): maximálna dovolená hodnota intenzity plazmy určená
rozsahom pri konštrukcii (predvolene je maximum rovné hodnote 255) –
pozri konštruktor Plazma(obrázok,
rozsah)
.trvanie
: 1
.oneskorenie
: 0
.Užitočné príklady použitia sú napríklad v hlavnom opise tejto triedy.
x
– x-ová súradnica stredu oblasti zdrojay
– y-ová súradnica stredu oblasti zdrojapolomer
– polomer oblasti zdrojadolnáHranica
– dolná hranica generovania náhodných hodnôt
intenzityhornáHranica
– horná hranica generovania náhodných hodnôt
intenzitytrvanie
– dĺžka aktivity zdroja v tikochoneskorenie
– odloženie začiatku aktivity zdroja v tikochpridajZdroj(double, double, double, int, int, int)
,
pridajZdroj(double, double, double, int, int)
,
pridajZdroj(double, double, double, int)
,
pridajZdroj(double, double, double)
,
pridajZdroj(Poloha, double, int, int, int, int)
,
pridajZdroj(Poloha, double, int, int, int)
,
pridajZdroj(Poloha, double, int, int)
,
pridajZdroj(Poloha, double, int)
,
pridajZdroj(Poloha, double)
public void pridajZdroj(double x, double y, double polomer, int dolnáHranica, int hornáHranica, int trvanie)
Pridá nový zdroj plazmy. Informácie o zdrojoch sú centralizované
v opise metódy pridajZdroj(x, y, polomer, dolnáHranica, hornáHranica,
trvanie, oneskorenie)
.
x
– x-ová súradnica stredu oblasti zdrojay
– y-ová súradnica stredu oblasti zdrojapolomer
– polomer oblasti zdrojadolnáHranica
– dolná hranica generovania náhodných hodnôt
intenzityhornáHranica
– horná hranica generovania náhodných hodnôt
intenzitytrvanie
– dĺžka aktivity zdroja v tikochpridajZdroj(double, double, double, int, int, int, int)
,
pridajZdroj(double, double, double, int, int)
,
pridajZdroj(double, double, double, int)
,
pridajZdroj(double, double, double)
,
pridajZdroj(Poloha, double, int, int, int, int)
,
pridajZdroj(Poloha, double, int, int, int)
,
pridajZdroj(Poloha, double, int, int)
,
pridajZdroj(Poloha, double, int)
,
pridajZdroj(Poloha, double)
public void pridajZdroj(double x, double y, double polomer, int dolnáHranica, int hornáHranica)
Pridá nový zdroj plazmy. Informácie o zdrojoch sú centralizované
v opise metódy pridajZdroj(x, y, polomer, dolnáHranica, hornáHranica,
trvanie, oneskorenie)
.
x
– x-ová súradnica stredu oblasti zdrojay
– y-ová súradnica stredu oblasti zdrojapolomer
– polomer oblasti zdrojadolnáHranica
– dolná hranica generovania náhodných hodnôt
intenzityhornáHranica
– horná hranica generovania náhodných hodnôt
intenzitypridajZdroj(double, double, double, int, int, int, int)
,
pridajZdroj(double, double, double, int, int, int)
,
pridajZdroj(double, double, double, int)
,
pridajZdroj(double, double, double)
,
pridajZdroj(Poloha, double, int, int, int, int)
,
pridajZdroj(Poloha, double, int, int, int)
,
pridajZdroj(Poloha, double, int, int)
,
pridajZdroj(Poloha, double, int)
,
pridajZdroj(Poloha, double)
public void pridajZdroj(double x, double y, double polomer, int rozsah)
Pridá nový zdroj plazmy. Informácie o zdrojoch sú centralizované
v opise metódy pridajZdroj(x, y, polomer, dolnáHranica, hornáHranica,
trvanie, oneskorenie)
.
x
– x-ová súradnica stredu oblasti zdrojay
– y-ová súradnica stredu oblasti zdrojapolomer
– polomer oblasti zdrojarozsah
– horná hranica generovania náhodných hodnôt intenzitypridajZdroj(double, double, double, int, int, int, int)
,
pridajZdroj(double, double, double, int, int, int)
,
pridajZdroj(double, double, double, int, int)
,
pridajZdroj(double, double, double)
,
pridajZdroj(Poloha, double, int, int, int, int)
,
pridajZdroj(Poloha, double, int, int, int)
,
pridajZdroj(Poloha, double, int, int)
,
pridajZdroj(Poloha, double, int)
,
pridajZdroj(Poloha, double)
public void pridajZdroj(double x, double y, double polomer)
Pridá nový zdroj plazmy. Informácie o zdrojoch sú centralizované
v opise metódy pridajZdroj(x, y, polomer, dolnáHranica, hornáHranica,
trvanie, oneskorenie)
.
x
– x-ová súradnica stredu oblasti zdrojay
– y-ová súradnica stredu oblasti zdrojapolomer
– polomer oblasti zdrojapridajZdroj(double, double, double, int, int, int, int)
,
pridajZdroj(double, double, double, int, int, int)
,
pridajZdroj(double, double, double, int, int)
,
pridajZdroj(double, double, double, int)
,
pridajZdroj(Poloha, double, int, int, int, int)
,
pridajZdroj(Poloha, double, int, int, int)
,
pridajZdroj(Poloha, double, int, int)
,
pridajZdroj(Poloha, double, int)
,
pridajZdroj(Poloha, double)
public void pridajZdroj(Poloha poloha, double polomer, int dolnáHranica, int hornáHranica, int trvanie, int oneskorenie)
Pridá nový zdroj plazmy. Informácie o zdrojoch sú centralizované
v opise metódy pridajZdroj(x, y, polomer, dolnáHranica, hornáHranica,
trvanie, oneskorenie)
, pričom pri tejto verzii metódy sú súradnice
polohy x
a y
nahradené inštanciou polohy poloha
.
poloha
– poloha stredu oblasti zdrojapolomer
– polomer oblasti zdrojadolnáHranica
– dolná hranica generovania náhodných hodnôt
intenzityhornáHranica
– horná hranica generovania náhodných hodnôt
intenzitytrvanie
– dĺžka aktivity zdroja v tikochoneskorenie
– odloženie začiatku aktivity zdroja v tikochpridajZdroj(double, double, double, int, int, int, int)
,
pridajZdroj(double, double, double, int, int, int)
,
pridajZdroj(double, double, double, int, int)
,
pridajZdroj(double, double, double, int)
,
pridajZdroj(double, double, double)
,
pridajZdroj(Poloha, double, int, int, int)
,
pridajZdroj(Poloha, double, int, int)
,
pridajZdroj(Poloha, double, int)
,
pridajZdroj(Poloha, double)
public void pridajZdroj(Poloha poloha, double polomer, int dolnáHranica, int hornáHranica, int trvanie)
Pridá nový zdroj plazmy. Informácie o zdrojoch sú centralizované
v opise metódy pridajZdroj(x, y, polomer, dolnáHranica, hornáHranica,
trvanie, oneskorenie)
, pričom pri tejto verzii metódy sú súradnice
polohy x
a y
nahradené inštanciou polohy poloha
.
poloha
– poloha stredu oblasti zdrojapolomer
– polomer oblasti zdrojadolnáHranica
– dolná hranica generovania náhodných hodnôt
intenzityhornáHranica
– horná hranica generovania náhodných hodnôt
intenzitytrvanie
– dĺžka aktivity zdroja v tikochpridajZdroj(double, double, double, int, int, int, int)
,
pridajZdroj(double, double, double, int, int, int)
,
pridajZdroj(double, double, double, int, int)
,
pridajZdroj(double, double, double, int)
,
pridajZdroj(double, double, double)
,
pridajZdroj(Poloha, double, int, int, int, int)
,
pridajZdroj(Poloha, double, int, int)
,
pridajZdroj(Poloha, double, int)
,
pridajZdroj(Poloha, double)
public void pridajZdroj(Poloha poloha, double polomer, int dolnáHranica, int hornáHranica)
Pridá nový zdroj plazmy. Informácie o zdrojoch sú centralizované
v opise metódy pridajZdroj(x, y, polomer, dolnáHranica, hornáHranica,
trvanie, oneskorenie)
, pričom pri tejto verzii metódy sú súradnice
polohy x
a y
nahradené inštanciou polohy poloha
.
poloha
– poloha stredu oblasti zdrojapolomer
– polomer oblasti zdrojadolnáHranica
– dolná hranica generovania náhodných hodnôt
intenzityhornáHranica
– horná hranica generovania náhodných hodnôt
intenzitypridajZdroj(double, double, double, int, int, int, int)
,
pridajZdroj(double, double, double, int, int, int)
,
pridajZdroj(double, double, double, int, int)
,
pridajZdroj(double, double, double, int)
,
pridajZdroj(double, double, double)
,
pridajZdroj(Poloha, double, int, int, int, int)
,
pridajZdroj(Poloha, double, int, int, int)
,
pridajZdroj(Poloha, double, int)
,
pridajZdroj(Poloha, double)
public void pridajZdroj(Poloha poloha, double polomer, int rozsah)
Pridá nový zdroj plazmy. Informácie o zdrojoch sú centralizované
v opise metódy pridajZdroj(x, y, polomer, dolnáHranica, hornáHranica,
trvanie, oneskorenie)
, pričom pri tejto verzii metódy sú súradnice
polohy x
a y
nahradené inštanciou polohy poloha
.
poloha
– poloha stredu oblasti zdrojapolomer
– polomer oblasti zdrojarozsah
– horná hranica generovania náhodných hodnôt intenzitypridajZdroj(double, double, double, int, int, int, int)
,
pridajZdroj(double, double, double, int, int, int)
,
pridajZdroj(double, double, double, int, int)
,
pridajZdroj(double, double, double, int)
,
pridajZdroj(double, double, double)
,
pridajZdroj(Poloha, double, int, int, int, int)
,
pridajZdroj(Poloha, double, int, int, int)
,
pridajZdroj(Poloha, double, int, int)
,
pridajZdroj(Poloha, double)
public void pridajZdroj(Poloha poloha, double polomer)
Pridá nový zdroj plazmy. Informácie o zdrojoch sú centralizované
v opise metódy pridajZdroj(x, y, polomer, dolnáHranica, hornáHranica,
trvanie, oneskorenie)
, pričom pri tejto verzii metódy sú súradnice
polohy x
a y
nahradené inštanciou polohy poloha
.
poloha
– poloha stredu oblasti zdrojapolomer
– polomer oblasti zdrojapridajZdroj(double, double, double, int, int, int, int)
,
pridajZdroj(double, double, double, int, int, int)
,
pridajZdroj(double, double, double, int, int)
,
pridajZdroj(double, double, double, int)
,
pridajZdroj(double, double, double)
,
pridajZdroj(Poloha, double, int, int, int, int)
,
pridajZdroj(Poloha, double, int, int, int)
,
pridajZdroj(Poloha, double, int, int)
,
pridajZdroj(Poloha, double, int)
public void aktivita()
Táto metóda je predvolene prázdna. Je automaticky spúšťaná
metódou pracuj
ak je tento generátor plazmy
aktívny. Jej prekrytím sa dá upraviť
správanie generátora v aktívnom stave. Inou možnosťou na
ovplyvňovanie správania sa generátora plazmy je definícia
deja.
Poznámka: Príkazy deja sú vykonávané tesne pred prepočtom údajov generátora plazmy a príkazy aktivity sú vykonané tesne po prepočte a prekreslení obsahu obrázka spárovaného s plazmou).
pasivita()
,
dej(Runnable)
,
pracuj()
,
aktívny()
,
neaktívny()
,
pasívny()
,
aktivuj()
,
deaktivuj()
public void pasivita()
Táto metóda je predvolene prázdna. Je automaticky spúšťaná
metódou pracuj
ak je generátor plazmy
pasívny. Jej prekrytím sa dá upraviť
správanie generátora v pasívnom stave.
aktivita()
,
pracuj()
,
aktívny()
,
neaktívny()
,
pasívny()
,
aktivuj()
,
deaktivuj()
public void pracuj()
Táto metóda je vykonávaná automaticky pri každom tiku
časovača sveta. Ak je inštancia
generátora plazmy aktívna, tak sú vykonané
príkazy deja (ak sú definované a ak je
krok kladný), hneď potom sú prepočítané údaje plazmy a prekreslený
obsah obrázka, s ktorým je inštancia tohto generátora plazmy
prepojená a nakoniec je vykonaná metóda aktivita
(čo má výzman pri inštanciách prekrytých tried). Ak je generátor
neaktívny, tak je len vykonaná metóda
pasivita
(pričom opäť – má to výzman len pri
inštanciách prekrytých tried).
Rôzne ďalšie informácie môžete nájsť v opisoch súvisiacich metód (v zozname nižšie).
aktivita()
,
pasivita()
,
krok()
,
dej()
,
aktívny()
,
neaktívny()
,
pasívny()
,
aktivuj()
,
deaktivuj()
public void roluj(double Δx, double Δy)
Posunie mapu plazmy o zadaný počet bodov v horizontálnom
a/alebo vertikálnom smere. Tá časť údajov plazmy, ktorá opustí
rozmery mapy, bude navždy stratená, pričom na protiľahlej strane
vznikne prázdna oblasť (oblasť s nulovým horením). Metóda má
využitie napríklad pri posune hracej plochy s horením uloženým
v obrázku, pričom musíme zabezpečiť, aby boli vzniknuté prázdne
časti mapy horenia korektne dogenerované. Ak je potrebné pretočiť
údaje plazmy dookola (t. j. bez straty obsahu), tak treba použiť
metódu pretoč
.
Poznámka:
Pri použití tejto metódy sa zároveň posunú všetky zdroje plazmy
(pozri metódu pridajZdroj
). Aj zdroje plazmy, ktoré sa nachádzajú za
hranicami obrázka ešte môžu mať vplyv na obsah generátora, ak majú
dostatočný rozsah.
Upozornenie: Je dôležité si uvedomiť, že pri pripojení plazmy k obrázku nemá rolovanie alebo pretáčanie samotného obrázka zmysel, pretože jeho obsah je vždy úplne nahradený generátorom plazmy. Na pretáčanie obsahu takého obrázka má zmysel použiť iba metódy plazmy.
Δx
– posun v horizontálnom (vodorovnom) smereΔy
– posun vo vertikálnom (zvislom) smerepublic void pretoč(double Δx, double Δy)
Pretočí mapu plazmy o zadaný počet bodov v horizontálnom
a/alebo vertikálnom smere. Tá časť údajov plazmy, ktorá by mala
pri pretočení opustiť rozmery mapy, sa premietne do protiľahlej
strany mapy. Pretáčaním údajov plazmy v ľubovoľnom smere sa nikdy
nestratia jej údaje a spätným posunom sa dá získať pôvodný stav
(ak medzitým nebol vykonaný ďalší prepočet). Ak je z rôznych
dôvodov potrebné, aby sa pri pretáčaní údajov plazmy tie časti,
ktoré opúšťajú rozmery mapy stratili a aby vzniknuté prázdne časti
zostali skutočne prázdne (pripravené na nové generovanie horenia),
treba použiť metódu roluj
.
Poznámka:
Pri použití tejto metódy sa zároveň posunú (s pretočením) všetky
zdroje plazmy (pozri metódu pridajZdroj
). Pretočenie zdroja nastane
ak jeho súradnice opustia hranice obrázka priradeného k tomuto
generátoru plazmy.
Upozornenie: Je dôležité si uvedomiť, že pri pripojení plazmy k obrázku nemá rolovanie alebo pretáčanie samotného obrázka zmysel, pretože jeho obsah je vždy úplne nahradený generátorom plazmy. Na pretáčanie obsahu takého obrázka má zmysel použiť iba metódy plazmy.
Δx
– posun v horizontálnom (vodorovnom) smereΔy
– posun vo vertikálnom (zvislom) smerepublic void pretoc(double Δx, double Δy)
Alias pre pretoč
.