public class Roj.Smerník extends Object
Pomocná trieda na riadené vkladanie bodov do roja. Smerník je jednoduchá neviditeľná pomôcka na generovanie (pridávanie) bodov roja. Smerník je orientovaný kurzor umožňujúci pridávanie bodov na svojej pozícii. Dá sa presúvať, otáčať, orientovať smerom na zadaný bod, uchovávať (zálohovať) a obnovovať svoju polohu a orientáciu s použitím vnútorných zásobníkov a podobne.
Modifikátor a typ | Atribút a opis |
---|---|
boolean |
vkladajObjekty
Príznak toho, či nové vkladané body majú mať viditeľné
objekty – či majú byť objekty definované na ich polohe kreslené.
|
boolean |
vkladajSpoje
Príznak toho, či nové vkladané body majú mať viditeľné
(definované) spoje.
|
Konštruktor a opis |
---|
Smerník() |
Modifikátor a typ | Metóda a opis |
---|---|
double[] |
dajPolohu()
Vráti vrchol zásobníka polôh smerníka vo forme trojprvkového
poľa [x, y, z].
|
double[] |
dajSmer()
Vráti vrchol zásobníka smerov smerníka vo forme trojprvkového
poľa [Δx, Δy, Δz].
|
double[] |
dajStav()
Vráti vrchol zásobníka stavov smerníka vo forme šesťprvkového
poľa [x, y, z, Δx, Δy, Δz].
|
boolean |
obnov()
Vyberie (obnoví) z vnútorného zásobníka stavu smerníka
poslednú uloženú polohu aj smer.
|
boolean |
obnovPolohu()
Vyberie (obnoví) z vnútorného zásobníka polôh smerníka poslednú
uloženú polohu.
|
boolean |
obnovSmer()
Vyberie (obnoví) z vnútorného zásobníka smerov smerníka posledný
uložený smer.
|
void |
otoc(double uhol)
Alias pre
otoč . |
void |
otoc(double[] uhly)
Alias pre
otoč . |
void |
otoc(double Δα,
double Δβ,
double Δγ)
Alias pre
otoč . |
void |
otoc(double u,
double v,
double w,
double Θ)
Alias pre
otoč . |
void |
otocOkolo(double uhol)
Alias pre
otočOkolo . |
void |
otocOkolo(double a,
double b,
double c,
double u,
double v,
double w,
double Θ,
boolean î)
Alias pre
otočOkolo . |
void |
otoč(double uhol)
Pootočí smerník (zmení jeho orientáciu) o zadaný uhol okolo
osi prechádzajúcej stredom súradnicovej sústavy a smerujúcej
k poslednému uloženému smeru smerníka.
|
void |
otoč(double[] uhly)
Pootočí smerník o uhly v smere osí x, y a z zadané vo forme
poľa.
|
void |
otoč(double Δα,
double Δβ,
double Δγ)
Pootočí smerník (zmení orientáciu) o zadané uhly v smere osí x,
y a z.
|
void |
otoč(double u,
double v,
double w,
double Θ)
Pootočí smerník (zmení jeho orientáciu) o uhol Θ okolo osi
prechádzajúcej stredom súradnicovej sústavy (
|
void |
otočOkolo(double uhol)
Zmení polohu smerníka (orientácia zostane zachovaná) jeho
pootočením o zadaný uhol okolo osi určenej posledným uloženým stavom smerníka (pri ukladaní stavu
je uchovaná poloha aj smer smerníka, takže na jednoznačné určenie
osi rotácie je k dispozícii dostatočné množstvo údajov).
|
void |
otočOkolo(double a,
double b,
double c,
double u,
double v,
double w,
double Θ,
boolean î)
Zmení polohu smerníka (orientácia zostane zachovaná) jeho
pootočením o uhol Θ okolo osi prechádzajúcej bodom [a, b, c]
a smerujúcej buď k bodu [u, v, w] (ak je parameter
î
rovný false ), alebo orientovanej v smere jednotkového
vektora ⟨u, v, w⟩ (ak je parameter î rovný true ). |
double[] |
poloha()
Vráti aktuálnu polohu smerníka vo forme trojprvkového
poľa [x, y, z].
|
void |
poloha(double[] bod)
Presunie smerník na súradnice zadané vo forme trojprvkového
poľa.
|
void |
poloha(double x,
double y,
double z)
Presunie smerník na zadané súradnice.
|
void |
posun(double dĺžka)
Alias pre
posuň . |
void |
posuň(double dĺžka)
Posunie smerník o zadanú dĺžku v aktuálnom smere (jeho
orientácie).
|
void |
posun(double[] bod)
Alias pre
posuň . |
void |
posuň(double[] bod)
Posunie smerník o zadaný rozdiel súradníc zadaný vo forme
trojprvkového poľa.
|
void |
posun(double Δx,
double Δy,
double Δz)
Alias pre
posuň . |
void |
posuň(double Δx,
double Δy,
double Δz)
Posunie smerník o zadaný rozdiel súradníc.
|
Roj.Bod |
pridajBod()
Vloží do roja bod na aktuálnej polohe smerníka s nastavenými
príznakmi kreslenia spoja a objektu na základe hodnôt príznakov
smerníka vkladajSpoje a vkladajObjekty.
|
double[] |
smer()
Vráti aktuálny „smer“ (jednotkový vektor pohybu) smerníka vo
forme trojprvkového poľa [Δx, Δy, Δz].
|
void |
smer(double[] vektor)
Nastaví „smer“ (jednotkový vektor pohybu) smerníka podľa
zadaných súradníc smerového vektora.
|
void |
smer(double x,
double y,
double z)
Nastaví „smer“ (jednotkový vektor pohybu) smerníka podľa zadaných
súradníc smerového vektora.
|
void |
smerNa(double x,
double y,
double z)
Nastaví orientáciu smerníka tak, aby smeroval k zadanému
bodu.
|
int |
vymaz()
Alias pre
vymaž . |
int |
vymaz(int koľko)
Alias pre
vymaž . |
int |
vymazPolohu()
Alias pre
vymažPolohu . |
int |
vymazPolohy(int koľko)
Alias pre
vymažPolohy . |
int |
vymazSmer()
Alias pre
vymažSmer . |
int |
vymazSmery(int koľko)
Alias pre
vymažSmery . |
int |
vymaž()
Odstráni posledný záznam zo zásobníka stavov smerníka.
|
int |
vymaž(int koľko)
Odstráni z vnútorného zásobníka stavov smerníka zadaný počet
posledných záznamov.
|
int |
vymažPolohu()
Odstráni posledný záznam zo zásobníka polôh smerníka.
|
int |
vymažPolohy(int koľko)
Odstráni z vnútorného zásobníka polôh smerníka zadaný počet
posledných záznamov.
|
int |
vymažSmer()
Odstráni posledný záznam zo zásobníka smerov smerníka.
|
int |
vymažSmery(int koľko)
Odstráni z vnútorného zásobníka smerov smerníka zadaný počet
posledných záznamov.
|
int |
vyprazdni()
Alias pre
vyprázdni . |
int |
vyprázdni()
Vyprázdni vnútorný zásobník stavov smerníka.
|
int |
vyprazdniPolohy()
Alias pre
vyprázdniPolohy . |
int |
vyprázdniPolohy()
Vyprázdni vnútorný zásobník polôh smerníka.
|
int |
vyprazdniSmery()
Alias pre
vyprázdniSmery . |
int |
vyprázdniSmery()
Vyprázdni vnútorný zásobník smerov smerníka.
|
int[] |
vyprazdniVsetko()
Alias pre
vyprázdniVšetko . |
int[] |
vyprázdniVšetko()
Vyprázdni všetky vnútorné zásobníky smerníka.
|
boolean |
zalohuj()
Alias pre
zálohuj . |
boolean |
zálohuj()
Vloží do vnútorného zásobníka stavu smerníka jeho aktuálnu
polohu aj smer.
|
boolean |
zalohujPolohu()
Alias pre
zálohujPolohu . |
boolean |
zálohujPolohu()
Vloží do vnútorného zásobníka polôh smerníka jeho aktuálnu
polohu.
|
boolean |
zalohujSmer()
Alias pre
zálohujSmer . |
boolean |
zálohujSmer()
Vloží do vnútorného zásobníka smerov smerníka jeho aktuálny smer.
|
public boolean vkladajSpoje
Príznak toho, či nové vkladané body majú mať viditeľné (definované) spoje.
public boolean vkladajObjekty
Príznak toho, či nové vkladané body majú mať viditeľné objekty – či majú byť objekty definované na ich polohe kreslené.
public double[] poloha()
Vráti aktuálnu polohu smerníka vo forme trojprvkového poľa [x, y, z].
public void poloha(double x, double y, double z)
Presunie smerník na zadané súradnice.
x
– x-ová súradnica novej polohyy
– y-ová súradnica novej polohyz
– z-ová súradnica novej polohypublic void poloha(double[] bod)
Presunie smerník na súradnice zadané vo forme trojprvkového poľa. (Ak má pole menší počet prvkov, poloha nebude nastavená. Pri väčšom počte prvkov sú brané do úvahy len prvé tri.)
bod
– najmenej trojprvkové pole súradníc novej polohypublic void posuň(double Δx, double Δy, double Δz)
Posunie smerník o zadaný rozdiel súradníc.
Δx
– prírastok x-ovej súradniceΔy
– prírastok y-ovej súradniceΔz
– prírastok z-ovej súradnicepublic void posun(double Δx, double Δy, double Δz)
Alias pre posuň
.
public void posuň(double[] bod)
Posunie smerník o zadaný rozdiel súradníc zadaný vo forme trojprvkového poľa. (Ak má pole menší počet prvkov, poloha nebude upravená. Pri väčšom počte prvkov sú brané do úvahy len prvé tri.)
bod
– najmenej trojprvkové pole prírastkov súradníc polohypublic void posun(double[] bod)
Alias pre posuň
.
public void posuň(double dĺžka)
Posunie smerník o zadanú dĺžku v aktuálnom smere (jeho orientácie).
dĺžka
– dĺžka, o ktorú sa má smerník posunúť v aktuálnom
smere jednotkového vektorapublic void posun(double dĺžka)
Alias pre posuň
.
public double[] smer()
Vráti aktuálny „smer“ (jednotkový vektor pohybu) smerníka vo forme trojprvkového poľa [Δx, Δy, Δz].
public void smer(double x, double y, double z)
Nastaví „smer“ (jednotkový vektor pohybu) smerníka podľa zadaných súradníc smerového vektora. Súradnice nemusia byť normalizované, metóda ich normalizuje.
x
– x-ová súradnica smerového vektoray
– y-ová súradnica smerového vektoraz
– z-ová súradnica smerového vektorapublic void smer(double[] vektor)
Nastaví „smer“ (jednotkový vektor pohybu) smerníka podľa zadaných súradníc smerového vektora. Súradnice nemusia byť normalizované, metóda ich normalizuje.
vektor
– najmenej trojprvkové pole súradníc smerového vektorapublic void otoč(double Δα, double Δβ, double Δγ)
Pootočí smerník (zmení orientáciu) o zadané uhly v smere osí x, y a z. Ide o pootočenie jednotkového vektora pohybu, takže aj keď je výpočtovo stred otáčania v strede súradnicovej sústavy, výsledný praktický efekt pootočenia vektora je zmena orientácie smerníka, ktorý sa od tohto momentu bude pohybovať zmeneným smerom.
Poznámka: Transformácia pootočenia je zložená z troch samostatných transformácií rotácie okolo jednotlivých osí súradnicovej sústavy. Skladanie transformácií nie je komutatívne, takže výsledok rotácie nie je intuitívny a môže sa líšiť od (intuitívne) predpokladaného stavu.
Δα
– hodnota zmeny uhla v smere osi xΔβ
– hodnota zmeny uhla v smere osi yΔγ
– hodnota zmeny uhla v smere osi zpublic void otoc(double Δα, double Δβ, double Δγ)
Alias pre otoč
.
public void otoč(double[] uhly)
Pootočí smerník o uhly v smere osí x, y a z zadané vo forme
poľa. Ak pole obsahuje aspoň tri prvky, tak sa metóda správa
rovnako ako metóda otoč(Δα, Δβ,
Δγ)
, ktorej boli poslané tri uhly z prvých troch prvkov poľa. Ak
pole obsahuje len dva prvky, tak je to ekvivalentné volaniu metódy
otoč(Δα, Δβ, 0.0)
, kde sú do
prvých dvoch parametrov vložené dva prvky poľa a podobne pri
jednoprvkovom poli ide o volanie ekvivalentné vykonaniu otoč(Δα, 0.0, 0.0)
.
Poznámka: Transformácia pootočenia je zložená z troch samostatných transformácií rotácie okolo jednotlivých osí súradnicovej sústavy. Skladanie transformácií nie je komutatívne, takže výsledok rotácie nie je intuitívny a môže sa líšiť od (intuitívne) predpokladaného stavu.
uhly
– najmenej trojprvkové pole uhlov rotácie okolo osí
x, y a zpublic void otoc(double[] uhly)
Alias pre otoč
.
public void otoč(double u, double v, double w, double Θ)
Pootočí smerník (zmení jeho orientáciu) o uhol Θ okolo osi
prechádzajúcej stredom súradnicovej sústavy (
u
– x-ová súradnica smerového vektora určujúceho os rotáciev
– y-ová súradnica smerového vektora určujúceho os rotáciew
– z-ová súradnica smerového vektora určujúceho os rotácieΘ
– uhol rotácie smerníkaotoč(double)
public void otoc(double u, double v, double w, double Θ)
Alias pre otoč
.
public void otoč(double uhol)
Pootočí smerník (zmení jeho orientáciu) o zadaný uhol okolo osi prechádzajúcej stredom súradnicovej sústavy a smerujúcej k poslednému uloženému smeru smerníka. Ak je zásobník smerov prázdny, tak metóda nevykoná nič.
(Pozri aj informácie v metóde otoč(u, v, w, Θ)
.)
uhol
– uhol pootočenia smerníka okolo osi prechádzajúcej
stredom súradnicovej sústavy a smerujúcej podľa orientácie
prevzatej z vrchola zásobníka smerovotoč(double, double, double, double)
public void otoc(double uhol)
Alias pre otoč
.
public void otočOkolo(double a, double b, double c, double u, double v, double w, double Θ, boolean î)
Zmení polohu smerníka (orientácia zostane zachovaná) jeho
pootočením o uhol Θ okolo osi prechádzajúcej bodom [a, b, c]
a smerujúcej buď k bodu [u, v, w] (ak je parameter î
rovný false
), alebo orientovanej v smere jednotkového
vektora ⟨u, v, w⟩ (ak je parameter î
rovný true
).
Pozor! Ak je parameter î
rovný true
, tak hodnoty parametrov u, v a w
musia(!) obsahovať normalizované
súradnice (súradnice jednotkového vektora), inak bude výsledok
nesprávny!
a
– x-ová súradnica bodu, ktorým prechádza os rotácieb
– y-ová súradnica bodu, ktorým prechádza os rotáciec
– z-ová súradnica bodu, ktorým prechádza os rotácieu
– x-ová súradnica bodu alebo vektora určujúceho smer
osi rotáciev
– y-ová súradnica bodu alebo vektora určujúceho smer
osi rotáciew
– z-ová súradnica bodu alebo vektora určujúceho smer
osi rotácieΘ
– uhol rotácie smerníkaî
– rozlišovací parameter toho, či parametre u, v a w určuje
bod, do ktorého má os rotácie smerovať (hodnota false
), alebo jednotkový vektor (hodnota true
)otočOkolo(double)
public void otocOkolo(double a, double b, double c, double u, double v, double w, double Θ, boolean î)
Alias pre otočOkolo
.
public void otočOkolo(double uhol)
Zmení polohu smerníka (orientácia zostane zachovaná) jeho pootočením o zadaný uhol okolo osi určenej posledným uloženým stavom smerníka (pri ukladaní stavu je uchovaná poloha aj smer smerníka, takže na jednoznačné určenie osi rotácie je k dispozícii dostatočné množstvo údajov). Ak je zásobník stavov prázdny, tak metóda nevykoná nič.
(Pozri aj informácie v metóde otočOkolo(a, b, c, u, v, w, Θ, î)
.)
uhol
– uhol pootočenia smerníka okolo osi prevzatej
z vrchola zásobníka stavovotočOkolo(double, double, double, double, double,
double, double, boolean)
public void otocOkolo(double uhol)
Alias pre otočOkolo
.
public void smerNa(double x, double y, double z)
Nastaví orientáciu smerníka tak, aby smeroval k zadanému bodu.
x
– x-ová súradnica cieľového boduy
– y-ová súradnica cieľového boduz
– z-ová súradnica cieľového bodupublic boolean zálohuj()
Vloží do vnútorného zásobníka stavu smerníka jeho aktuálnu
polohu aj smer. (Ak metóda uspeje, tak vráti true
.)
true
pri úspechu; false
v opačnom
prípadepublic boolean zalohuj()
Alias pre zálohuj
.
public boolean obnov()
Vyberie (obnoví) z vnútorného zásobníka stavu smerníka
poslednú uloženú polohu aj smer. (Ak metóda uspeje, tak vráti
true
.)
true
pri úspechu; false
v opačnom
prípadepublic double[] dajStav()
Vráti vrchol zásobníka stavov smerníka vo forme šesťprvkového
poľa [x, y, z, Δx, Δy, Δz]. Ak je zásobník prázdny alebo nastane
iné zlyhanie, tak metóda vráti hodnotu null
. Zásobník
zostane nezmenený.
null
, ak je zásobník prázdnypublic int vyprázdni()
Vyprázdni vnútorný zásobník stavov smerníka. Metóda vráti počet záznamov odstránených zo zásobníka. Ak vznikne iné zlyhanie, tak metóda vráti −1.
public int vyprazdni()
Alias pre vyprázdni
.
public int vymaž()
Odstráni posledný záznam zo zásobníka stavov smerníka.
(Porovnaj s metódou vyprázdni
.) Metóda
vráti počet záznamov odstránených zo zásobníka. Ak vznikne iné
zlyhanie, tak metóda vráti −1.
public int vymaz()
Alias pre vymaž
.
public int vymaž(int koľko)
Odstráni z vnútorného zásobníka stavov smerníka zadaný počet posledných záznamov. Metóda vráti počet záznamov odstránených zo zásobníka. Ak vznikne iné zlyhanie, tak metóda vráti −1.
koľko
– požadovaný počet záznamov, ktoré majú byť odstránenépublic int vymaz(int koľko)
Alias pre vymaž
.
public boolean zálohujPolohu()
Vloží do vnútorného zásobníka polôh smerníka jeho aktuálnu
polohu. (Ak metóda uspeje, tak vráti true
.)
true
pri úspechu; false
v opačnom
prípadepublic boolean zalohujPolohu()
Alias pre zálohujPolohu
.
public boolean obnovPolohu()
Vyberie (obnoví) z vnútorného zásobníka polôh smerníka poslednú
uloženú polohu. (Ak metóda uspeje, tak vráti true
.)
true
pri úspechu; false
v opačnom
prípadepublic double[] dajPolohu()
Vráti vrchol zásobníka polôh smerníka vo forme trojprvkového
poľa [x, y, z]. Ak je zásobník prázdny alebo nastane iné zlyhanie,
tak metóda vráti hodnotu null
. Zásobník zostane
nezmenený.
public int vyprázdniPolohy()
Vyprázdni vnútorný zásobník polôh smerníka. Metóda vráti počet záznamov odstránených zo zásobníka. Ak vznikne iné zlyhanie, tak metóda vráti −1.
public int vyprazdniPolohy()
Alias pre vyprázdniPolohy
.
public int vymažPolohu()
Odstráni posledný záznam zo zásobníka polôh smerníka. (Porovnaj
s metódou vyprázdniPolohy
.) Metóda
vráti počet záznamov odstránených zo zásobníka. Ak vznikne iné
zlyhanie, tak metóda vráti −1.
public int vymazPolohu()
Alias pre vymažPolohu
.
public int vymažPolohy(int koľko)
Odstráni z vnútorného zásobníka polôh smerníka zadaný počet posledných záznamov. Metóda vráti počet záznamov odstránených zo zásobníka. Ak vznikne iné zlyhanie, tak metóda vráti −1.
koľko
– požadovaný počet záznamov, ktoré majú byť odstránenépublic int vymazPolohy(int koľko)
Alias pre vymažPolohy
.
public boolean zálohujSmer()
Vloží do vnútorného zásobníka smerov smerníka jeho aktuálny smer.
(Ak metóda uspeje, tak vráti true
.)
true
pri úspechu; false
v opačnom
prípadepublic boolean zalohujSmer()
Alias pre zálohujSmer
.
public boolean obnovSmer()
Vyberie (obnoví) z vnútorného zásobníka smerov smerníka posledný
uložený smer. (Ak metóda uspeje, tak vráti true
.)
true
pri úspechu; false
v opačnom
prípadepublic double[] dajSmer()
Vráti vrchol zásobníka smerov smerníka vo forme trojprvkového
poľa [Δx, Δy, Δz]. Ak je zásobník prázdny alebo nastane iné
zlyhanie, tak metóda vráti hodnotu null
. Zásobník
zostane nezmenený.
public int vyprázdniSmery()
Vyprázdni vnútorný zásobník smerov smerníka. Metóda vráti počet záznamov odstránených zo zásobníka. Ak vznikne iné zlyhanie, tak metóda vráti −1.
public int vyprazdniSmery()
Alias pre vyprázdniSmery
.
public int vymažSmer()
Odstráni posledný záznam zo zásobníka smerov smerníka. (Porovnaj
s metódou vyprázdniSmery
.) Metóda
vráti počet záznamov odstránených zo zásobníka. Ak vznikne iné
zlyhanie, tak metóda vráti −1.
public int vymazSmer()
Alias pre vymažSmer
.
public int vymažSmery(int koľko)
Odstráni z vnútorného zásobníka smerov smerníka zadaný počet posledných záznamov. Metóda vráti počet záznamov odstránených zo zásobníka. Ak vznikne iné zlyhanie, tak metóda vráti −1.
koľko
– požadovaný počet záznamov, ktoré majú byť odstránenépublic int vymazSmery(int koľko)
Alias pre vymažSmery
.
public int[] vyprázdniVšetko()
Vyprázdni všetky vnútorné zásobníky smerníka. Metóda vráti trojprvkové pole, ktoré bude obsahovať, koľko záznamov bolo odstránených zo zásobníka stavov, polôh a smerov. Hodnota −1 niektorého z prvkov znamená, že vyprázdňovanie konkrétneho zásobníka zlyhalo.
public int[] vyprazdniVsetko()
Alias pre vyprázdniVšetko
.
public Roj.Bod pridajBod()
Vloží do roja bod na aktuálnej polohe smerníka s nastavenými príznakmi kreslenia spoja a objektu na základe hodnôt príznakov smerníka vkladajSpoje a vkladajObjekty. Nový bod je návratovou hodnotou tejto metódy.