public class Roj extends Object
Táto trieda umožňuje definovať a pracovať so sériou bodov (zvaných roj) umiestnených v trojrozmernom priestore. Na zobrazenie scény roja je použitá bodová projekcia. Body môžu byť prepojené spojmi, čím môžu byť vytvárané drôtené modely a v každom bode môže byť definovaný objekt na nakreslenie, čím sa dajú vytvárať jednoduché 3D scény zložené z 2D kulís (pozri príklad kolotoča nižšie).
Súradnicový systém roja je orientovaný ľavotočivo, čiže keď sa pozrieme na plochu xy zvrchu tak, že y-ová os smeruje doprava (rastom kladných hodnôt), tak x-ová os smeruje hore (pozri obrázok nižšie). Alebo keď sa pozeráme na počiatok súradnicovej sústavy z oktetu všetkých troch kladných súradníc tak, že z-ová súradnica smeruje hore, tak x-ovú os máme po pravej ruke a y-ovú po ľavej (pozri obrázok nižšie).
Každý bod roja má definované množstvo atribútov, ktoré
majú poskytovať čo najväčšiu flexibilitu. Väčšina z nich slúži na
umiestnenie bodu do priestoru. Základná trojica atribútov sú pôvodné
súradnice bodu v priestore [x0, y0, z0]. Z nich sú pomocou atribútov posunutia
[dx, dy, dz],
stredu rotácie [xs, ys,
zs] a uhlov rotácie (alfa,
beta, gama) vypočítané
takzvané lokálne transformované súradnice v priestore [x1, y1, z1]. Ďalším krokom je
výpočet takzvaných konečných súradníc [x2,
y2, z2], čo sú globálne
transformované súradnice, to jest riadia sa hodnotou aktuálnej
transformačnej matice roja, ktorá je prepočítavaná z polohy a orientácie
kamery (pozri napríklad: nastavUhly
, nastavStredOtáčania
, nastavKameru
), mierky, prípadne ďalších
(automaticky zisťovaných) hodnôt. Posledným krokom je výpočet polohy bodu
premietnutej na plátno [x3, y3]
a korešpondujúceho faktora rozmeru objektu kresleného v konkrétnom bode
z3.
|
|
V tomto balíčku (7z) je dostupný na prevzatie miniprojekt obsahujúci ovládač roja a od neho odvodenú jednoduchú triedu testu roja s niekoľkými príkladmi použitia roja.
Ukážka
možného výstupu príkladu testu roja s implementáciou ovládača roja.
Na jeho základe je postavený nasledujúci príklad s kolotočom.
Príklad:
Tento príklad implementuje trojrozmernú kolotočovú ponuku zloženú z čiarových ikon vo formáte SVG.
import
knižnica.*;import
java.awt.Shape
;// SVG ikonky boli vyrobené (pomocou vektorového grafického editora
// Inkscape) z bitmapovej verzie ikon voľne dostupných na webovej stránke:
// https://icon-library.net/icon/menu-icon-png-3-lines-20.
//
// Ďalšie odporúčané zdroje:
//
// • Výborný SVG tester: https://codepen.io/AmeliaBR/pen/JoYNEZ?editors=1000
// • Coyier, Chris. 2018. The SVG ‘path’ Syntax : An Illustrated Guide.
// ⟨https://css-tricks.com/svg-path-syntax-illustrated-guide/⟩.
// • https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
// • https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d
public
class
Kolotočextends
GRobot
{// Roj a príznak potreby jeho prekreslenia (po zmene parametrov):
private
Roj
roj =new
Roj
(this
);private
boolean
prekresliRoj =true
;// Uhol jednotkového pootočenia kolotoča a aktuálne želaný uhol:
private
double
Δu, želanýUhol =90.0
;// Zoznam SVG súborov obsahujúcich SVG tvary ikoniek:
private
String
[] mená =new
String
[] {"ramcek.svg"
,"spendlik.svg"
,"hudba.svg"
,"kompas.svg"
,"film.svg"
,"obrazok.svg"
,"kalkulacka.svg"
,"kava.svg"
,"papiere.svg"
,"zakladac.svg"
,"mobilna-siet.svg"
,"smernik.svg"
,"kvapka.svg"
,"sluchadlo.svg"
,// …
};// Statická trieda zoskupujúca funkcionalitu prevodu čiarovej ikonky
// vo formáte SVG do tvarov Javy.
public
static
class
Ikonkaimplements
KreslenieTvaru
{// Atribút na prepínanie zobrazenia ladiacich informácií:
private
static
boolean
info =false
;// Vnútorné atribúty kreslenia ikonky:
private
String
meno;private
Shape
[] tvary;private
Farba
[] výplne;private
Farba
[] čiary;// Konštruktor ikonky.
public
Ikonka(String
meno) {this
.meno = meno; SVGnaTvary(meno); }
// Metóda prevádzajúca tvary zo zadaného SVG súboru na tvary Javy.
private
void
SVGnaTvary(String
meno) {try
{// Vyčistenie inštancie svgPodpora od predchádzajúceho
// čítania:
svgPodpora
.vymaž
();// Overenie, či bol súbor korektne prečítaný:
if
(-1
==svgPodpora
.čítaj
(meno)) {// Predvolený tvar kružnice v prípade zlyhania čítania
// súboru:
tvary =new
Shape
[] {new
java.awt.geom.Ellipse2D.Double
(Svet
.prepočítajX
(-10
),Svet
.prepočítajY
(10
),20
,20
)}; výplne =new
Farba
[] {biela
.priehľadnejšia
(0.6
)}; čiary =new
Farba
[] {ružová
}; }else
{// Získanie súradnice stredu:
Bod
stred =svgPodpora
.stredKresby
();// Výroba transformácie posunutia v súradnicovom
// priestore Javy (tá sa nižšie použije na posunutie
// všetkých tvarov):
SVGPodpora
.Transformácia
posunTam =new
SVGPodpora
.Transformácia
(SVGPodpora
.Transformácia
.POSUN
, -stred
.polohaX
(),stred
.polohaY
());// Uloženie počtu tvarov kresby do pomocnej premennej:
int
počet =svgPodpora
.počet
();// Vytvorenie polí s prislúchajúcimi počtami prvkov:
tvary =new
Shape
[počet]; výplne =new
Farba
[počet]; čiary =new
Farba
[počet];// Pridanie transformácie ku každému tvaru a zároveň
// overenie toho, či má byť tento tvar vypĺňaný, kreslený
// (alebo oboje):
for
(int
i =0
; i < počet; ++i) {svgPodpora
.pridajTransformácie
(i, posunTam); tvary[i] =svgPodpora
.dajVýsledný
(i); výplne[i] =svgPodpora
.farbaVýplne
(i); čiary[i] =svgPodpora
.farbaČiary
(i); } } }catch
(Exception e) {// (Toto nastane len výnimočne. Aj neprítomný alebo chybný
// SVG súbor je signalizovaný inak: návratovou hodnotou
// metódy čítaj.)
e.printStackTrace
(); } }// Kreslenie ikonky.
public
void
kresli(GRobot
r) {// Všetky ikonky budú kreslené zvislo s hrúbkou čiary určenou
// aktuálnou mierkou robota:
r.uhol
(90
); r.hrúbkaČiary
(r.mierka
());
// Poznámka: Prispôsobenie (zmena) niektorých programátorom
// vybraných farieb počas kreslenia ikoniek kolotoča je vhodné
// potvrdiť práve na tomto mieste tak, že si farbu (alebo farby)
// vopred zapamätáme do premennej a potom ňou (nimi) nahradíme
// zvolenú kľúčovú farba (resp. farby) v kresbe. V tejto ukážke
// (iba na ukážku) nahrádzame ružovú farbu robotom vopred
// vygenerovanou náhodnou farbou. V dodaných SVG súboroch je
// táto farba (opäť len na ukážku) použitá iba raz – v „bodke“
// na obrázku mobilna-siet.svg. Môže však ísť o nahradenie
// ľubovoľnej farby ľubovoľnou farbou. Môžu byť tiež využité
// verejné atribúty farba a farbaSpoja aktuálne kresleného bodu
// roja (pozri atribút Roj.bod). (Spoje i tak v tomto príklade
// nevyužívame, tak môžeme využiť atribút rezervovaný na ich
// zafarbovanie na vlastné účely.)
r.náhodnáFarba
();Farba
f = r.farba
();
int
i =0
;for
(Shape
tvar : tvary) {if
(null
!= výplne[i]) {if
(ružová
.equals
(výplne[i])) r.farba
(f);else
r.farba
(výplne[i]); r.vyplňTvar
(tvar,true
); }if
(null
!= čiary[i]) {if
(ružová
.equals
(čiary[i])) r.farba
(f);else
r.farba
(čiary[i]); r.kresliTvar
(tvar,true
); } ++i; }// Ladiace informácie ikoniek (meno súboru nad ňou a mierka
// pod ňou):
if
(info) { r.skoč
(r.veľkosť
() *1.5
); r.text
(meno); r.odskoč
(r.veľkosť
() *2.75
); r.text
(r.F
(r.mierka
(),2
)); } } }
// Konštruktor celého kolotoča.
private
Kolotoč() {// Keby sme chceli mať predvolene zobrazené osi súradnicovej
// sústavy (ktoré sú dobrou pomôckou pri ladení), volali by sme
// na tomto mieste tento príkaz: osi();
// Nastavenie predvolených vlastností roja (pri každom počte
// bodov je potrebné tieto parametre „doladiť“ – najmä mierku):
resetujRoj();// Poznámka: Rôzne hodnoty od predvolených majú len:
// roj.mierka(500);
// roj.nastavKameru(0, 50, 30);
// Výpočet pomocných parametrov, pomocou ktorých vložíme
// niekoľko bodov do roja:
int
n = mená.length;// počet bodov
double
r =15
;// polomer kružnice, na ktorej budú umestnené
Δu =360.0
/ n;// uhol otáčania smerníka (*)
double
d = (2
*Math
.PI
* r) / n;// dĺžka posunu smerníka (*)
// (*) Smerník slúži na zjednodušenie vkladania bodov do roja.
// Vypneme predvolené vkladanie spojov smerníkom:
roj.smerník
.vkladajSpoje
=false
;// Uloženie jedného smeru (vektora osi otáčania) do zásobníka, aby
// sa dal použiť jednoduchší tvar volania metódy „otoč“ smerníka
// (je to jednotkový vektor v smere osi z):
roj.smerník
.smerNa
(0
,0
,1
); roj.smerník
.zálohujSmer
();// Počiatočné nastavenie smerníka (smer je súhlasný so smerom
// osi y a smerník je vysunutý o polomer otáčania v smere osi x):
roj.smerník
.smerNa
(0
,1
,0
); roj.smerník
.posuň
(-r,0
,0
);// Prvé pootočenie smerníka o polovicu uhla (voláme zjednodušený tvar
// metódy „otoč,“ pretože smer osi otáčania určuje vektor uložený
// v zásobníku; vyššie):
roj.smerník
.otoč
(Δu /2.0
);// Inak by bolo treba používať tento tvar volania metódy:
// roj.smerník.otoč(0, 0, 1, -Δu / 2.0);
// Cyklus vkladania bodov:
for
(int
i =0
; i < n; ++i) {// Pred každým vložením bodu potočíme smerník:
roj.smerník
.otoč
(-Δu);// Alternatívne (bez vektora v zásobníku spomínaného vyššie)
// by bolo treba použiť tento tvar príkazu:
// roj.smerník.otoč(0, 0, 1, Δu);
// Vložíme bod do roja a posunieme smerník:
Roj.Bod
bod = roj.smerník
.pridajBod
(); bod.kreslenie
=new
Ikonka(mená[i]); roj.smerník
.posuň
(d); }skry
();// (Skrytie hlavného robota.)
// Keby bolo predvolene zapnuté zobrazenie ladiacich informácií
// o roji (čo v tomto príklade nie je), tak by sme tu museli vykonať
// prvé volanie (inak by boli po štarte skryté a zobrazili by sa až
// po ľubovoľnej zmene zobrazenia roja): infoORoji();
// Vypnutie automatického prekresľovania a zapnutie časovača:
Svet
.nekresli
();Svet
.spustiČasovač
(); }
// Pomocné nástroje na definíciu a kreslenie (resp. skrývanie
// a zobrazovanie) osí.
// {{{
// Koncové body osí:
private
Roj.Bod
osX =null
;private
Roj.Bod
osY =null
;private
Roj.Bod
osZ =null
;// Vlastný tvar na kreslenie šípky na konci osi.
public
KreslenieTvaru
šípka = r -> { r.vpravo
(18
); r.vzad
(14
); r.zdvihniPero
(); r.vpred
(14
); r.vľavo
(36
); r.položPero
(); r.vzad
(14
); };// Definovanie alebo úprava dĺžky osi x.
public
void
osX(double
dĺžka) {if
(null
== osX) {Roj.Bod
bod = roj.pridajBod
(); bod.zobraz
= bod.spoj
=false
; bod.x0
= -2
; bod.skupina
=1
; osX = roj.pridajBod
(); osX.farba
= osX.farbaSpoja
=červená
; osX.x0
= dĺžka; osX.skupina
=1
; osX.kreslenie
= šípka; }else
osX.x0
= dĺžka; prekresliRoj =true
; }// Zobrazenie/skrytie osi x.
public
void
osX(boolean
zobraz) {if
(null
== osX) {if
(zobraz) osX(30
);else
return
; } osX.zobraz
= osX.spoj
= zobraz; prekresliRoj =true
; }// Overenie, či je os x zobrazená.
public
boolean
osX() {if
(null
== osX)return
false
;return
osX.spoj
; }// Definovanie alebo úprava dĺžky osi y.
public
void
osY(double
dĺžka) {if
(null
== osZ) {Roj.Bod
bod = roj.pridajBod
(); bod.zobraz
= bod.spoj
=false
; bod.y0
= -2
; bod.skupina
=2
; osY = roj.pridajBod
(); osY.farba
= osY.farbaSpoja
=zelená
; osY.y0
= dĺžka; osY.skupina
=2
; osY.kreslenie
= šípka; }else
osY.y0
= dĺžka; prekresliRoj =true
; }// Zobrazenie/skrytie osi y.
public
void
osY(boolean
zobraz) {if
(null
== osY) {if
(zobraz) osY(30
);else
return
; } osY.zobraz
= osY.spoj
= zobraz; prekresliRoj =true
; }// Overenie, či je os y zobrazená.
public
boolean
osY() {if
(null
== osY)return
false
;return
osY.spoj
; }// Definovanie alebo úprava dĺžky osi z.
public
void
osZ(double
dĺžka) {if
(null
== osZ) {Roj.Bod
bod = roj.pridajBod
(); bod.zobraz
= bod.spoj
=false
; bod.z0
= -2
; bod.skupina
=3
; osZ = roj.pridajBod
(); osZ.farba
= osZ.farbaSpoja
=modrá
; osZ.z0
= dĺžka; osZ.skupina
=3
; osZ.kreslenie
= šípka; }else
osZ.z0
= dĺžka; prekresliRoj =true
; }// Zobrazenie/skrytie osi z.
public
void
osZ(boolean
zobraz) {if
(null
== osZ) {if
(zobraz) osZ(10
);else
return
; } osZ.zobraz
= osZ.spoj
= zobraz; prekresliRoj =true
; }// Overenie, či je os z zobrazená.
public
boolean
osZ() {if
(null
== osZ)return
false
;return
osZ.spoj
; }// Definovanie alebo úprava dĺžky všetkých troch osí naraz.
public
void
osi(double
dĺžkaX,double
dĺžkaY,double
dĺžkaZ) { osX(dĺžkaX); osY(dĺžkaY); osZ(dĺžkaZ); }// Zobrazenie/skrytie troch osí naraz.
public
void
osi(boolean
zobraz) { osX(zobraz); osY(zobraz); osZ(zobraz); }// Zobrazenie (definovanie) všetkých troch osí s predvolenými
// hodnotami dĺžok.
public
void
osi() { osi(30
,30
,10
); }// }}}
// Hromadné úpravy roja a jeho bodov. (Reset a hromadné transformácie
// používajúce vnútorné atribúty bodov, ktoré sú rezervované na tieto
// účely. Niektoré z týchto metód sú určené len pre pomocné režimy
// ladenia 5 a 6 tejto ukážky.)
// {{{
// Táto metóda slúži na rýchle nastavenie predvolených vlastností roja.
// (Táto metóda je pravdepodobne jediná, ktorej obsahom sa treba
// zaoberať pri redukcii príkladu – t. j. pri odstraňovaní kreslenia
// osí a iných ladiacich informácií.)
public
void
resetujRoj() {// Toto sú síce predvolené vlastnosti roja, ale pri každom resete
// ich potrebujeme vrátiť späť:
roj.nastavUhly
(-110
, -360
,45
); roj.nastavStredOtáčania
(0
,0
,0
);// Nasledujúce dve vlastnosti upravujeme z predvolených hodnôt
// (ktoré by boli: mierka = 1000; kamera = [0, -125, 200]) na také,
// aké potrebujeme v našej ukážke:
roj.mierka
(500
); roj.nastavKameru
(0
,50
,30
);// Nastavenie príznaku potrebnosti prekreslenia roja:
prekresliRoj =true
;// Predvolená hodnota želaného uhla:
želanýUhol =270.0
; }// Reset vnútorných individuálnych vlastností posunutia (dx až dz)
// a pootočenia (alfa až gama) jednotlivých bodov roja.
public
void
resetujBody() {for
(Roj.Bod
bod : roj.body
())if
(1
> bod.skupina
||3
< bod.skupina
) { bod.dx
= bod.dy
= bod.dz
=// bod.xs = bod.ys = bod.zs =
bod.alfa
= bod.beta
= bod.gama
=0.0
; bod.transformuj
=true
; } roj.transformovať
(); prekresliRoj =true
; }// Posunutie pomocou vnútorných vlastností dx až dz bodov roja.
public
void
posuňBody(double
Δx,double
Δy,double
Δz) {for
(Roj.Bod
bod : roj.body
())if
(1
> bod.skupina
||3
< bod.skupina
) { bod.dx
+= Δx; bod.dy
+= Δy; bod.dz
+= Δz; bod.transformuj
=true
; } roj.transformovať
(); prekresliRoj =true
; }// Pootočenie pomocou vnútorných vlastností alfa až gama bodov roja.
public
void
pootočBody(double
Δα,double
Δβ,double
Δγ) {for
(Roj.Bod
bod : roj.body
())if
(1
> bod.skupina
||3
< bod.skupina
) { bod.alfa
+= Δα; bod.beta
+= Δβ; bod.gama
+= Δγ; bod.transformuj
=true
; } roj.transformovať
(); prekresliRoj =true
; }// }}}
// Ovládanie – režim ladenia.
// {{{
// Atribúty súvisiace s režimom ladenia.
private
int
režim =3
;private
static
boolean
infoORoji =false
;private
double
myšX =0
;private
double
myšY =0
;// Výpis ladiacich informácií.
public
void
infoORoji() {Svet
.vymažTexty
();if
(0
!= režim && infoORoji) {Svet
.vypíšRiadok
("K[x, y, z]: "
,F
(roj.kameraX
(),2
),"; "
,F
(roj.kameraY
(),2
),"; "
,F
(roj.kameraZ
(),2
));Svet
.vypíšRiadok
("SO[x, y, z]: "
,F
(roj.stredOtáčaniaX
(),2
),"; "
,F
(roj.stredOtáčaniaY
(),2
),"; "
,F
(roj.stredOtáčaniaZ
(),2
));Svet
.vypíšRiadok
("α, β, γ: "
,F
(roj.uholAlfa
(),2
) +"°; "
,F
(roj.uholBeta
(),2
) +"°; "
,F
(roj.uholGama
(),2
) +"°"
);Svet
.vypíšRiadok
("M: "
,F
(roj.mierka
(),2
));Svet
.vypíš
("Režim myši: "
);switch
(režim) {case
1
:Svet
.vypíšRiadok
("kamera"
);break
;case
2
:Svet
.vypíšRiadok
("stred otáčania"
);break
;case
3
:Svet
.vypíšRiadok
("uhly rotácie"
);break
;case
4
:Svet
.vypíšRiadok
("mierka"
);break
;case
5
:Svet
.vypíšRiadok
("posunutie bodov"
);break
;case
6
:Svet
.vypíšRiadok
("pootočenie bodov"
);break
; }Svet
.vypíšRiadok
(riadok
,"Želaný uhol: "
, želanýUhol);Svet
.vypíšRiadok
("Uhol pootočenia: "
, Δu);int
položka = čísloPoložky();if
(položka <0
|| položka >= mená.length)Svet
.vypíšRiadok
("Neznáme číslo položky: "
, položka);else
Svet
.vypíšRiadok
("Zvolená položka "
, položka,": "
, mená[položka]); } }// Rozšírenie ovládania klávesnicou pre režim ladenia.
public
void
priUvoľneníKlávesu() {switch
(ÚdajeUdalostí
.kláves
()) {case
Kláves
.VK_0
: režim =0
;break
;case
Kláves
.VK_1
: režim =1
;break
;case
Kláves
.VK_2
: režim =2
;break
;case
Kláves
.VK_3
: režim =3
;break
;case
Kláves
.VK_4
: režim =4
;break
;case
Kláves
.VK_5
: režim =5
;break
;case
Kláves
.VK_6
: režim =6
;break
;case
Kláves
.VK_I
: infoORoji = !infoORoji;break
;case
Kláves
.VK_O
: Ikonka.info = !Ikonka.info; prekresliRoj =true
;break
;case
Kláves
.VK_S
: osi(!osX());break
;case
Kláves
.MEDZERA
: resetujRoj(); resetujBody();break
; } infoORoji(); }// Ovládanie myšou v režime ladenia – akcia vykonaná pri stlačení
// ľubovoľného tlačidla myši.
@
Overridepublic
void
stlačenieTlačidlaMyši
() {// if (tlačidloMyši(ĽAVÉ)) {} else {}
myšX =ÚdajeUdalostí
.polohaMyšiX
(); myšY =ÚdajeUdalostí
.polohaMyšiY
(); }// Ovládanie myšou v režime ladenia – akcia vykonaná pri ťahaní
// myšou (t. j. pohybe myšou počas držania ľubovoľného tlačidla).
@
Overridepublic
void
ťahanieMyšou
() {// (Rozlišuje sa akcia stlačenia ľavého a „iného“ tlačidla…)
if
(ÚdajeUdalostí
.tlačidloMyši
(ĽAVÉ
)) {switch
(režim) {case
1
: roj.posuňKameru
(ÚdajeUdalostí
.polohaMyšiX
() - myšX,ÚdajeUdalostí
.polohaMyšiY
() - myšY,0.0
);break
;case
2
: roj.posuňStredOtáčania
(ÚdajeUdalostí
.polohaMyšiX
() - myšX,ÚdajeUdalostí
.polohaMyšiY
() - myšY,0.0
);break
;case
3
:if
(ÚdajeUdalostí
.myš
().isControlDown
()) {if
(ÚdajeUdalostí
.myš
().isShiftDown
()) roj.pootoč
(0.0
, (ÚdajeUdalostí
.polohaMyšiX
() - myšX +ÚdajeUdalostí
.polohaMyšiY
() - myšY) /10.0
,0.0
);else
roj.pootoč
((ÚdajeUdalostí
.polohaMyšiX
() - myšX +ÚdajeUdalostí
.polohaMyšiY
() - myšY) /10.0
,0.0
,0.0
); }else
roj.pootoč
( (ÚdajeUdalostí
.polohaMyšiY
() - myšY) /10.0
, (ÚdajeUdalostí
.polohaMyšiX
() - myšX) /10.0
,0.0
);break
;case
4
: roj.zmeňMierku
( (myšX -ÚdajeUdalostí
.polohaMyšiX
()) /10.0
+ (myšY -ÚdajeUdalostí
.polohaMyšiY
()) /1.0
);break
;case
5
: posuňBody( (ÚdajeUdalostí
.polohaMyšiX
() - myšX) /10.0
, (myšY -ÚdajeUdalostí
.polohaMyšiY
()) /10.0
,0
);break
;case
6
: pootočBody( (ÚdajeUdalostí
.polohaMyšiY
() - myšY) /10.0
, (ÚdajeUdalostí
.polohaMyšiX
() - myšX) /10.0
,0
);break
; } }else
{switch
(režim) {case
1
: roj.posuňKameru
(0.0
,0.0
, ((myšX -ÚdajeUdalostí
.polohaMyšiX
()) /100.0
) + ((myšY -ÚdajeUdalostí
.polohaMyšiY
()) /10.0
));break
;case
2
: roj.posuňStredOtáčania
(0.0
,0.0
, myšY -ÚdajeUdalostí
.polohaMyšiY
());break
;case
3
: roj.pootoč(0.0
,0.0
, (ÚdajeUdalostí
.polohaMyšiX
() - myšX +ÚdajeUdalostí
.polohaMyšiY
() - myšY) /10.0
);break
;case
4
: roj.zmeňMierku( (myšX -ÚdajeUdalostí
.polohaMyšiX
()) /1000.0
+ (myšY -ÚdajeUdalostí
.polohaMyšiY
()) /100.0
);break
;case
5
: posuňBody(0
,0
, (ÚdajeUdalostí
.polohaMyšiX
() - myšX) /100.0
+ (ÚdajeUdalostí
.polohaMyšiY
() - myšY) /10.0
);break
;case
6
: pootočBody(0
,0
,(ÚdajeUdalostí
.polohaMyšiX
() - myšX +ÚdajeUdalostí
.polohaMyšiY
() - myšY) /10.0
);break
; } } myšX =ÚdajeUdalostí
.polohaMyšiX
(); myšY =ÚdajeUdalostí
.polohaMyšiY
(); prekresliRoj =true
; infoORoji();Svet
.prekresli
(); }// Kreslenie vlastného tvaru robota (ktoré by bolo predvoleným tvarom
// tých bodov roja, ktoré by nemali definovaný žiadny vlastný tvar).
// V tomto príklade je to zariadené tak, že volanie tejto metódy by
// nemalo nikdy nastať. Je definovaná v podstate len „pre istotu.“
@
Overridepublic
void
kresliSeba
() {krúžok
(); }
// V tomto komentári sa nachádza krátka sekcia vytvorená na ladiace
// účely, ktorá pri pohybe kurzorom myši (výhradne pri pohybe kurzorom
// myši) overí prítomnosť kurzora nad niektorým bodom roja a v prípade
// nájdenia takéhoto bodu nad ním nachvíľu zobrazí červenú kružnicu
// (realizovanú prostredníctvom jednoúčelového robota uloženého
// v inštancii zvýrazniť).
//
// private GRobot zvýrazniť = null;
// @Override public void pohybMyši()
// {
// Roj.Bod bod = null == roj ? null : roj.dajBodNaMyši();
// if (null == bod)
// {
// if (null != zvýrazniť) zvýrazniť.skry();
// }
// else
// {
// if (null == zvýrazniť)
// {
// zvýrazniť = new GRobot()
// {
// @Override public void deaktivácia() { skry(); }
// @Override public void aktivácia() { zobraz(); }
// };
//
// zvýrazniť.vlastnýTvar(r -> r.krúžok());
// zvýrazniť.farba(červená);
// zvýrazniť.hrúbkaČiary(3);
// zvýrazniť.vrstva(1);
// }
//
// zvýrazniť.skočNa(bod.x3, bod.y3);
// zvýrazniť.veľkosť(bod.z3);
// zvýrazniť.aktivuj(10);
// }
// }
// }}}
// Pomocná metóda zisťujúca, ktorá ikonka je v popredí (podľa želaného
// uhla pootočenia roja podľa osi z, ktorý je uložený v prislúchajúcom
// atribúte tejto triedy).
private
int
čísloPoložky() {double
uhol = (želanýUhol +90
+ Δu /2
) %360.0
;if
(uhol <0
) uhol +=360.0
;return
(int
)(uhol / Δu); }// Pomocná metóda určená na rozšírenie a na vykonanie prislúchajúcej
// akcie podľa „aktuálneho“ čísla položky (zisteného metódou vyššie).
private
void
potvrdeniePoložky() {int
položka = čísloPoložky();if
(položka <0
|| položka >= mená.length)Svet
.chyba
("Neznáme číslo položky: "
+ položka);else
Svet
.správa
("Zvolená položka "
+ položka +": "
+ mená[položka]); }// Ovládanie kolotoča klávesnicou.
@
Overridepublic
void
uvoľnenieKlávesu
() {switch
(ÚdajeUdalostí
.kláves
()) {case
Kláves
.VPRAVO
: želanýUhol += Δu;break
;case
Kláves
.VĽAVO
: želanýUhol -= Δu;break
;case
Kláves
.ENTER
: potvrdeniePoložky();break
;default
: priUvoľneníKlávesu(); } }// Alternatívny spôsob aktivovania položky – klikom myši.
@
Overridepublic
void
klik
() {// Prevzatie bodu na myši.
Roj.Bod
bod =null
== roj ?null
: roj.dajBodNaMyši
();if
(null
!= bod &&null
!= bod.kreslenie
&& bod.kreslenie
instanceof
Ikonka) {// Získanie „mena“ bodu (resp. názvu SVG súboru).
String
meno = ((Ikonka)bod.kreslenie
).meno;// Zistenie indexu položky kolotoča podľa jej „mena.“
int
indexOf = -1
;for
(int
i =0
; i < mená.length; ++i)if
(mená[i].equals
(meno)) { indexOf = i;break
; }if
(-1
!= indexOf) {// „Aktivácia“ položky rolovaním na ňu.
if
(ÚdajeUdalostí
.polohaMyšiX
() >=0
)for
(int
i =0
; čísloPoložky() != indexOf && i < mená.length; ++i) želanýUhol += Δu;else
for
(int
i =0
; čísloPoložky() != indexOf && i < mená.length; ++i) želanýUhol -= Δu;// Potvrdenie položky (rovnakým spôsobom ako pri klávesnici).
if
(čísloPoložky() == indexOf) potvrdeniePoložky(); } } }// Animácia kolotoča v časovači.
@
Overridepublic
void
tik
() {double
Δγ = želanýUhol - roj.uholGama
();if
(Math
.abs
(Δγ) >=1.0
) { roj.pootoč
(0.0
,0.0
, Δγ /10.0
); prekresliRoj =true
; infoORoji(); }if
(prekresliRoj) { prekresliRoj =false
;Svet
.vymažGrafiku
(); roj.kresli
(); }if
(Svet
.neboloPrekreslené
())Svet
.prekresli
(); }
// Hlavná metóda.
public
static
void
main(String
[] args) {Svet
.použiKonfiguráciu
("Kolotoč.cfg"
);new
Kolotoč(); } }
Balíček SVG ikoniek na prevzatie: kolotoc-ikonky.7z
Výsledok:
Ukážka
fungovania kolotoča so zapnutými ladiacimi informáciami a pootočením
roviny otáčania.
Informačné zdroje, ktoré môžu pomôcť pri riešení matematických problémov súvisiacich s touto kapitolou (triedou):
Poznámka: Zdroje môžu obsahovať chyby (v čase ich citovania ich obsahovali), preto je vhodné informácie z nich konfrontovať s inou (napríklad tlačenou) literatúrou. Autor pri tvorbe tejto triedy použil uvedené zdroje najmä na pripomenutie si informácií o 3D grafike a súvisiacich operáciách s maticami (ktoré naposledy používal asi 12 až 15 rokov pred začatím písania tejto triedy).
Modifikátor a typ | Trieda a opis |
---|---|
class |
Roj.Bod
Trieda uchovávajúca údaje o jednom bode roja.
|
class |
Roj.Smernik
Alias pre
Smerník . |
class |
Roj.Smerník
Pomocná trieda na riadené vkladanie bodov do roja.
|
Modifikátor a typ | Atribút a opis |
---|---|
static int |
ALFA
Konštanta slúžiaca na určenie čítania uhla alfa metódou
uhol(ktorý) alebo nastavenia uhla alfa metódou
uhol(ktorý, hodnota) . |
static int |
BETA
Konštanta slúžiaca na určenie čítania uhla beta metódou
uhol(ktorý) alebo nastavenia uhla beta metódou
uhol(ktorý, hodnota) . |
Roj.Bod |
bod
Inštancia aktuálne spracúvaného bodu.
|
static int |
GAMA
Konštanta slúžiaca na určenie čítania uhla gama metódou
uhol(ktorý) alebo nastavenia uhla gama metódou
uhol(ktorý, hodnota) . |
GRobot |
kresli
Toto je kresliaci robot roja.
|
Roj.Smernik |
smernik
Alias pre
smerník . |
Roj.Smernik |
smerník
Inštancia smerníka.
|
Modifikátor a typ | Metóda a opis |
---|---|
Zoznam<Roj.Bod> |
body()
Vráti kópiu aktuálneho zoznamu bodov roja.
|
void |
citajZoSuboru(Súbor súbor,
String identifikátor)
Alias pre
čítajZoSúboru . |
void |
čítajZoSúboru(Súbor súbor,
String identifikátor)
Prečíta údaje o roji z konfiguračného súboru otvoreného na čítanie.
|
Roj.Bod |
dajBodNa(double súradnicaX,
double súradnicaY)
Zistí, či sa projekcia niektorého bodu roja nachádza na zadaných
súradniciach.
|
Roj.Bod |
dajBodNa(double súradnicaX,
double súradnicaY,
double polomer)
Zistí, či sa projekcia niektorého bodu roja nachádza na zadaných
súradniciach.
|
Roj.Bod |
dajBodNa(Poloha objekt)
Zistí, či sa projekcia niektorého bodu roja nachádza na
súradniciach zadaného objektu.
|
Roj.Bod |
dajBodNa(Poloha objekt,
double polomer)
Zistí, či sa projekcia niektorého bodu roja nachádza na
súradniciach zadaného objektu.
|
Roj.Bod |
dajBodNaMysi()
Alias pre
dajBodNaMyši . |
Roj.Bod |
dajBodNaMysi(double polomer)
Alias pre
dajBodNaMyši . |
Roj.Bod |
dajBodNaMyši()
Zistí, či sa projekcia niektorého bodu roja nachádza na
súradniciach myši.
|
Roj.Bod |
dajBodNaMyši(double polomer)
Zistí, či sa projekcia niektorého bodu roja nachádza na
súradniciach myši.
|
double[] |
kamera()
Vráti aktuálnu polohu kamery vo forme trojprvkového poľa [kx, ky, kz].
|
double |
kameraX()
Vráti aktuálnu x-ovú súradnicu polohy kamery.
|
void |
kameraX(double hodnota)
Nastaví novú x-ovú súradnicu polohy kamery.
|
double |
kameraY()
Vráti aktuálnu y-ovú súradnicu polohy kamery.
|
void |
kameraY(double hodnota)
Nastaví novú y-ovú súradnicu polohy kamery.
|
double |
kameraZ()
Vráti aktuálnu z-ovú súradnicu polohy kamery.
|
void |
kameraZ(double hodnota)
Nastaví novú z-ovú súradnicu polohy kamery.
|
void |
kresli()
Prekreslí roj s použitím kresliaceho robota
roja.
|
double |
mierka()
Vráti aktuálnu hodnotu mierky roja.
|
void |
mierka(double hodnota)
Nastaví novú hodnotu mierky roja.
|
void |
nastavKameru(double[] bod)
Nastaví polohu kamery roja na základe hodnôt zadaného poľa.
|
void |
nastavKameru(double nkx,
double nky,
double nkz)
Nastaví novú polohu kamery.
|
void |
nastavStredOtacania(double[] bod)
Alias pre
nastavStredOtáčania . |
void |
nastavStredOtacania(double nxs,
double nys,
double nzs)
Alias pre
nastavStredOtáčania . |
void |
nastavStredOtáčania(double[] bod)
Nastaví stred otáčania roja na základe hodnôt zadaného poľa.
|
void |
nastavStredOtáčania(double nxs,
double nys,
double nzs)
Nastaví nové súradnice stredu otáčania.
|
void |
nastavUhly(double[] pole)
Nastaví hodnoty uhlov roja na základe hodnôt zadaného poľa.
|
void |
nastavUhly(double nα,
double nβ,
double nγ)
|
static double[] |
normala(double x1,
double y1,
double z1,
double x2,
double y2,
double z2,
double x3,
double y3,
double z3)
Alias pre
normála . |
static double[] |
normála(double x1,
double y1,
double z1,
double x2,
double y2,
double z2,
double x3,
double y3,
double z3)
Vypočíta zo zadaných súradníc troch bodov určujúcich plochu
v priestore súradnice normálového vektora k tejto ploche a vráti
jeho nenormalizované súradnice.
|
static double[] |
normalizuj(double[] vektor)
Normalizuje vektor zadaných súradníc.
|
void |
pootoc(double[] pole)
Alias pre
pootoč . |
void |
pootoc(double Δα,
double Δβ,
double Δγ)
Alias pre
pootoč . |
void |
pootoč(double[] pole)
Pozmení hodnoty uhlov roja na základe hodnôt zadaného poľa.
|
void |
pootoč(double Δα,
double Δβ,
double Δγ)
|
Zoznam<Roj.Bod> |
poradieKreslenia()
Vráti kópiu aktuálneho zoznamu bodov roja zoradeného podľa
poradia kreslenia.
|
void |
posunKameru(double[] bod)
Alias pre
posuňKameru . |
void |
posuňKameru(double[] bod)
Posunie polohu kamery roja na základe hodnôt zadaného poľa.
|
void |
posunKameru(double Δkx,
double Δky,
double Δkz)
Alias pre
posuňKameru . |
void |
posuňKameru(double Δkx,
double Δky,
double Δkz)
Posunie polohu kamery.
|
void |
posunStredOtacania(double[] bod)
Alias pre
posuňStredOtáčania . |
void |
posunStredOtacania(double Δxs,
double Δys,
double Δzs)
Alias pre
posuňStredOtáčania . |
void |
posuňStredOtáčania(double[] bod)
Posunie stred otáčania roja na základe hodnôt zadaného poľa.
|
void |
posuňStredOtáčania(double Δxs,
double Δys,
double Δzs)
Posunie súradnice stredu otáčania.
|
void |
precitajZoSuboru(Súbor súbor,
String identifikátor)
Alias pre
čítajZoSúboru . |
void |
prečítajZoSúboru(Súbor súbor,
String identifikátor)
Alias pre
čítajZoSúboru . |
void |
prepocitaj()
Alias pre
prepočítaj . |
void |
prepocitat()
Alias pre
prepočítať . |
void |
prepočítaj()
|
void |
prepočítať()
Táto metóda vynúti prepočet premietaných súradníc (
x3 , y3 ) a veľkostí kreslených objektov
(z3 ) všetkých bodov roja pri najbližšom kreslení
alebo pri volaní metódy prepočítaj . |
Roj.Bod |
pridajBod()
Pridá nový bod do roja.
|
void |
pridajDoSVG(SVGPodpora svgPodpora)
Táto metóda slúži na export grafiky roja do zadanej inštancie
SVG podpory.
|
double[] |
stredOtacania()
Alias pre
stredOtáčania . |
double |
stredOtacaniaX()
Alias pre
stredOtáčaniaX . |
void |
stredOtacaniaX(double hodnota)
Alias pre
stredOtáčaniaX . |
double |
stredOtacaniaY()
Alias pre
stredOtáčaniaY . |
void |
stredOtacaniaY(double hodnota)
Alias pre
stredOtáčaniaY . |
double |
stredOtacaniaZ()
Alias pre
stredOtáčaniaZ . |
void |
stredOtacaniaZ(double hodnota)
Alias pre
stredOtáčaniaZ . |
double[] |
stredOtáčania()
Vráti aktuálny stred otáčania vo forme trojprvkového poľa [xs, ys, zs].
|
double |
stredOtáčaniaX()
Vráti x-ovú súradnicu stredu otáčania.
|
void |
stredOtáčaniaX(double hodnota)
Nastaví novú hodnotu x-ovej súradnice stredu otáčania.
|
double |
stredOtáčaniaY()
Vráti y-ovú súradnicu stredu otáčania.
|
void |
stredOtáčaniaY(double hodnota)
Nastaví novú hodnotu y-ovej súradnice stredu otáčania.
|
double |
stredOtáčaniaZ()
Vráti z-ovú súradnicu stredu otáčania.
|
void |
stredOtáčaniaZ(double hodnota)
Nastaví novú hodnotu z-ovej súradnice stredu otáčania.
|
void |
transformovat()
Alias pre
transformovať . |
void |
transformovať()
Táto metóda vynúti prepočet konečných (globálne transformovaných)
súradníc
x2 , y2 , z2 všetkých bodov roja pri
najbližšom kreslení alebo pri volaní metódy transformuj . |
void |
transformuj()
|
void |
transformuj(Roj.Bod bod)
|
double[] |
uhly()
Vráti aktuálne hodnoty uhlov alfa (α), beta (β) a gama (γ) roja
vo forme trojprvkového poľa [α, β, γ].
|
static double[] |
uhlyK(double[] vektor)
Vráti uhly potrebné na pootočenie jednotkového vektora paralelného
s osou z okolo osí x (prvý prvok poľa v návratovej hodnote označovaný
v tejto dokomentácii aj ako uhol α) a y (druhý prvok poľa v návratovej
hodnote označovaný v tejto dokomentácii aj ako uhol β) tak, aby
výsledný vektor smeroval k zadanému polohovému vektoru.
|
static double[] |
uhlyK(double x,
double y,
double z)
Vráti uhly potrebné na pootočenie jednotkového vektora paralelného
s osou z okolo osí x (prvý prvok poľa v návratovej hodnote označovaný
v tejto dokomentácii aj ako uhol α) a y (druhý prvok poľa v návratovej
hodnote označovaný v tejto dokomentácii aj ako uhol β) tak, aby
výsledný vektor smeroval k zadanému polohovému vektoru.
|
double |
uhol(int ktorý)
|
void |
uhol(int ktorý,
double hodnota)
Nastaví jeden alebo viacero uhlov na stanovenú hodnotu.
|
double |
uholAlfa()
Vráti aktuálnu hodnotu uhla alfa (vnútorne značeného
α ). |
void |
uholAlfa(double hodnota)
Nastaví novú hodnotu uhlu alfa (vnútorne značeného
α ). |
double |
uholBeta()
Vráti aktuálnu hodnotu uhla beta (vnútorne značeného
β ). |
void |
uholBeta(double hodnota)
Nastaví novú hodnotu uhlu beta (vnútorne značeného
β ). |
double |
uholGama()
Vráti aktuálnu hodnotu uhla gama (vnútorne značeného
γ ). |
void |
uholGama(double hodnota)
Nastaví novú hodnotu uhlu gama (vnútorne značeného
γ ). |
void |
ulozDoSuboru(Súbor súbor,
String identifikátor)
Alias pre
uložDoSúboru . |
void |
uložDoSúboru(Súbor súbor,
String identifikátor)
Zapíše údaje o roji do konfiguračného súboru otvoreného na zápis.
|
void |
vymaz()
Alias pre
vymaž . |
void |
vymazBod(Roj.Bod bod)
Alias pre
vymažBod . |
void |
vymaž()
Odstráni všetky body z roja.
|
void |
vymažBod(Roj.Bod bod)
Odstráni bod z roja.
|
void |
zmenMierku(double Δmierka)
Alias pre
zmeňMierku . |
void |
zmeňMierku(double Δmierka)
Upraví hodnotu mierky roja.
|
public final Roj.Smernik smerník
Inštancia smerníka. Podrobnosti v dokumentácii triedy
Smerník
.
public final Roj.Smernik smernik
Alias pre smerník
.
public static final int ALFA
Konštanta slúžiaca na určenie čítania uhla alfa metódou
uhol(ktorý)
alebo nastavenia uhla alfa metódou
uhol(ktorý, hodnota)
.
public static final int BETA
Konštanta slúžiaca na určenie čítania uhla beta metódou
uhol(ktorý)
alebo nastavenia uhla beta metódou
uhol(ktorý, hodnota)
.
public static final int GAMA
Konštanta slúžiaca na určenie čítania uhla gama metódou
uhol(ktorý)
alebo nastavenia uhla gama metódou
uhol(ktorý, hodnota)
.
public GRobot kresli
Toto je kresliaci robot roja. Ak nie je nastavený, tak roj nemôže byť kreslený a pri individuálnom pokuse o nakreslenie bodu roja nastane chyba. Tvar tohto robota určuje predvolený tvar objektov na polohách bodov roja. Vlastnosti pera ovplyvňujú kreslenie spojov medzi bodmi roja – hrúbka určuje predvolenú hrúbku a poloha (poloha v zmysle stavu zdvihnutia/ploženia pera) to, či budú všetky spoje paušálne nakreslené alebo nie.
public Roj.Bod bod
Inštancia aktuálne spracúvaného bodu. Počas kreslenia spojníc a objektov alebo počas exportu do SVG formátu je do tohto atribútu ukladaná inštancia aktuálne spracúvaného bodu.
public Roj(GRobot kreslič)
Konštruktor roja. Prijíma inštanciu grafického robota, ktorý bude kresličom roja. Bez kresliča roj nemôže byť nakreslený.
kreslič
– kreslič rojapublic Roj.Bod pridajBod()
Pridá nový bod do roja. Bod bude mať hodnoty všetkých atribútov nastavené na predvolené. Návratová hodnota tejto metódy je inštancia nového bodu, ktorá môže byť použitá na nastavenie všetkých vlastností bodu.
public void vymažBod(Roj.Bod bod)
Odstráni bod z roja.
bod
– inštancia bodu, ktorý má byť z roja odstránenýpublic void vymaž()
Odstráni všetky body z roja.
public void vymaz()
Alias pre vymaž
.
public Zoznam<Roj.Bod> body()
Vráti kópiu aktuálneho zoznamu bodov roja. Zoznam je určený
(predovšetkým) na prechádzanie a úpravu vlastností jednotlivých
bodov. Vymazaním bodu z tohto zoznamu sa bod z roja nevymaže. Na
vymazanie bodu slúži metóda roja vymažBod
.
public Zoznam<Roj.Bod> poradieKreslenia()
Vráti kópiu aktuálneho zoznamu bodov roja zoradeného podľa
poradia kreslenia. Zoznam je určený (predovšetkým) na prechádzanie
v súvislosti s prekresľovaním objektov. (Napríklad vymazaním bodu
z tohto zoznamu sa bod nevymaže. Na vymazanie bodu z roja slúži
metóda vymažBod
.)
public double[] uhly()
Vráti aktuálne hodnoty uhlov alfa (α), beta (β) a gama (γ) roja vo forme trojprvkového poľa [α, β, γ].
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.
nastavUhly(double[])
public double uholAlfa()
Vráti aktuálnu hodnotu uhla alfa (vnútorne značeného
α
). Tento uhol je spätý s rotáciou okolo osi x, pričom
sa do úvahy berie aj aktuálny stred otáčania.
Rotácia zmenou uhlov alfa (α), beta (β) a gama (γ) je v podstate
rotáciou kamery roja.
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.
uholBeta()
,
uholGama()
,
uholAlfa(double)
,
uholBeta(double)
,
uholGama(double)
,
uhol(int)
,
uhol(int, double)
,
nastavUhly(double, double, double)
,
pootoč(double, double, double)
public double uholBeta()
Vráti aktuálnu hodnotu uhla beta (vnútorne značeného
β
). Tento uhol je spätý s rotáciou okolo osi y, pričom
sa do úvahy berie aj aktuálny stred otáčania.
Rotácia zmenou uhlov alfa (α), beta (β) a gama (γ) je v podstate
rotáciou kamery roja.
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.
uholAlfa()
,
uholGama()
,
uholAlfa(double)
,
uholBeta(double)
,
uholGama(double)
,
uhol(int)
,
uhol(int, double)
,
nastavUhly(double, double, double)
,
pootoč(double, double, double)
public double uholGama()
Vráti aktuálnu hodnotu uhla gama (vnútorne značeného
γ
). Tento uhol je spätý s rotáciou okolo osi z, pričom
sa do úvahy berie aj aktuálny stred otáčania.
Rotácia zmenou uhlov alfa (α), beta (β) a gama (γ) je v podstate
rotáciou kamery roja.
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.
uholAlfa()
,
uholBeta()
,
uholAlfa(double)
,
uholBeta(double)
,
uholGama(double)
,
uhol(int)
,
uhol(int, double)
,
nastavUhly(double, double, double)
,
pootoč(double, double, double)
public void uholAlfa(double hodnota)
Nastaví novú hodnotu uhlu alfa (vnútorne značeného α
).
Pozri aj opis metódy uholAlfa()
.
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
– nová hodnota uhla alfauholAlfa()
,
uholBeta()
,
uholGama()
,
uholBeta(double)
,
uholGama(double)
,
uhol(int)
,
uhol(int, double)
,
nastavUhly(double, double, double)
,
pootoč(double, double, double)
public void uholBeta(double hodnota)
Nastaví novú hodnotu uhlu beta (vnútorne značeného β
).
Pozri aj opis metódy uholBeta()
.
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
– nová hodnota uhla betauholAlfa()
,
uholBeta()
,
uholGama()
,
uholAlfa(double)
,
uholGama(double)
,
uhol(int)
,
uhol(int, double)
,
nastavUhly(double, double, double)
,
pootoč(double, double, double)
public void uholGama(double hodnota)
Nastaví novú hodnotu uhlu gama (vnútorne značeného γ
).
Pozri aj opis metódy uholGama()
.
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
– nová hodnota uhla gamauholAlfa()
,
uholBeta()
,
uholGama()
,
uholAlfa(double)
,
uholBeta(double)
,
uhol(int)
,
uhol(int, double)
,
nastavUhly(double, double, double)
,
pootoč(double, double, double)
public double uhol(int ktorý)
Vráti hodnotu zadaného uhla, pričom ak zadaná konštanta obsahuje
kombináciu príznakov viacerých uhlov, tak prioritne vracia uhol
ALFA
, potom BETA
a nakoniec
GAMA
.
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.
ktorý
– konštanta určujúca, ktorý uhol má byť vrátený
(ALFA
, BETA
, GAMA
)ktorý
uholAlfa()
,
uholBeta()
,
uholGama()
,
uholAlfa(double)
,
uholBeta(double)
,
uholGama(double)
,
uhol(int, double)
,
nastavUhly(double, double, double)
,
pootoč(double, double, double)
public void uhol(int ktorý, double hodnota)
Nastaví jeden alebo viacero uhlov na stanovenú hodnotu.
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.
ktorý
– konštanta určujúca, ktorý uhol alebo uhly majú byť
nastavené; parameter môže byť kombináciou konštánt ALFA
, BETA
a GAMA
)hodnota
– nová hodnota uhla alebo uhlov určených parametrom
ktorý
uholAlfa()
,
uholBeta()
,
uholGama()
,
uholAlfa(double)
,
uholBeta(double)
,
uholGama(double)
,
uhol(int)
,
nastavUhly(double, double, double)
,
pootoč(double, double, double)
public void nastavUhly(double nα, double nβ, double nγ)
Nastaví hodnoty všetkých troch uhlov alfa, beta a gama. (Pozri aj stred otáčania.)
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.
nα
– nová hodnota uhla alfanβ
– nová hodnota uhla betanγ
– nová hodnota uhla gamauholAlfa()
,
uholBeta()
,
uholGama()
,
uholAlfa(double)
,
uholBeta(double)
,
uholGama(double)
,
uhol(int)
,
uhol(int, double)
,
pootoč(double, double, double)
public void nastavUhly(double[] pole)
Nastaví hodnoty uhlov roja na základe hodnôt zadaného poľa.
Metóda má zjednodušiť nastavenie orientácie roja (napríklad
v súvislosti zo zálohou a obnovou stavu roja; pozri aj uhly
). Ak je zadané pole aspoň šesťprvkové,
tak metóda pracuje s druhou trojicou prvkov poľa. Ak je pole
aspoň trojprvkové, tak metóda berie do úvahy jeho prvé tri
prvky. (Ak má pole menší počet prvkov, tak metóda nevykoná
nič.)
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.
pole
– pole na základe ktorého budú nastavené uhly rojauhly()
,
nastavUhly(double, double, double)
public void pootoč(double Δα, double Δβ, double Δγ)
Pozmení hodnoty všetkých troch uhlov alfa, beta a gama.
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.
Δα
– miera zmeny hodnoty uhla alfaΔβ
– miera zmeny hodnoty uhla betaΔγ
– miera zmeny hodnoty uhla gamauholAlfa()
,
uholBeta()
,
uholGama()
,
uholAlfa(double)
,
uholBeta(double)
,
uholGama(double)
,
uhol(int)
,
uhol(int, double)
,
nastavUhly(double, double, double)
public void pootoc(double Δα, double Δβ, double Δγ)
Alias pre pootoč
.
public void pootoč(double[] pole)
Pozmení hodnoty uhlov roja na základe hodnôt zadaného poľa. Metóda má zjednodušiť zmenu orientácie roja. Ak je zadané pole aspoň šesťprvkové, tak metóda pracuje s druhou trojicou prvkov poľa. Ak je pole aspoň trojprvkové, tak metóda berie do úvahy jeho prvé tri prvky. (Ak má pole menší počet prvkov, tak metóda nevykoná nič.)
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.
pole
– pole na základe ktorého budú pozmenené uhly rojanastavUhly(double[])
,
pootoč(double, double, double)
public void pootoc(double[] pole)
Alias pre pootoč
.
public double[] stredOtáčania()
Vráti aktuálny stred otáčania vo forme trojprvkového poľa [xs, ys, zs].
nastavStredOtáčania(double[])
public double[] stredOtacania()
Alias pre stredOtáčania
.
public double stredOtáčaniaX()
Vráti x-ovú súradnicu stredu otáčania.
stredOtáčaniaY()
,
stredOtáčaniaZ()
,
stredOtáčaniaX(double)
,
stredOtáčaniaY(double)
,
stredOtáčaniaZ(double)
,
nastavStredOtáčania(double, double, double)
,
posuňStredOtáčania(double, double, double)
public double stredOtacaniaX()
Alias pre stredOtáčaniaX
.
public double stredOtáčaniaY()
Vráti y-ovú súradnicu stredu otáčania.
stredOtáčaniaX()
,
stredOtáčaniaZ()
,
stredOtáčaniaX(double)
,
stredOtáčaniaY(double)
,
stredOtáčaniaZ(double)
,
nastavStredOtáčania(double, double, double)
,
posuňStredOtáčania(double, double, double)
public double stredOtacaniaY()
Alias pre stredOtáčaniaY
.
public double stredOtáčaniaZ()
Vráti z-ovú súradnicu stredu otáčania.
stredOtáčaniaX()
,
stredOtáčaniaY()
,
stredOtáčaniaX(double)
,
stredOtáčaniaY(double)
,
stredOtáčaniaZ(double)
,
nastavStredOtáčania(double, double, double)
,
posuňStredOtáčania(double, double, double)
public double stredOtacaniaZ()
Alias pre stredOtáčaniaZ
.
public void stredOtáčaniaX(double hodnota)
Nastaví novú hodnotu x-ovej súradnice stredu otáčania.
hodnota
– nová hodnota x-ovej súradnice stredu otáčaniastredOtáčaniaX()
,
stredOtáčaniaY()
,
stredOtáčaniaZ()
,
stredOtáčaniaY(double)
,
stredOtáčaniaZ(double)
,
nastavStredOtáčania(double, double, double)
,
posuňStredOtáčania(double, double, double)
public void stredOtacaniaX(double hodnota)
Alias pre stredOtáčaniaX
.
public void stredOtáčaniaY(double hodnota)
Nastaví novú hodnotu y-ovej súradnice stredu otáčania.
hodnota
– nová hodnota y-ovej súradnice stredu otáčaniastredOtáčaniaX()
,
stredOtáčaniaY()
,
stredOtáčaniaZ()
,
stredOtáčaniaX(double)
,
stredOtáčaniaZ(double)
,
nastavStredOtáčania(double, double, double)
,
posuňStredOtáčania(double, double, double)
public void stredOtacaniaY(double hodnota)
Alias pre stredOtáčaniaY
.
public void stredOtáčaniaZ(double hodnota)
Nastaví novú hodnotu z-ovej súradnice stredu otáčania.
hodnota
– nová hodnota z-ovej súradnice stredu otáčaniastredOtáčaniaX()
,
stredOtáčaniaY()
,
stredOtáčaniaZ()
,
stredOtáčaniaX(double)
,
stredOtáčaniaY(double)
,
nastavStredOtáčania(double, double, double)
,
posuňStredOtáčania(double, double, double)
public void stredOtacaniaZ(double hodnota)
Alias pre stredOtáčaniaZ
.
public void nastavStredOtáčania(double nxs, double nys, double nzs)
nxs
– nová hodnota x-ovej súradnice stredu otáčanianys
– nová hodnota y-ovej súradnice stredu otáčanianzs
– nová hodnota z-ovej súradnice stredu otáčaniastredOtáčaniaX()
,
stredOtáčaniaY()
,
stredOtáčaniaZ()
,
stredOtáčaniaX(double)
,
stredOtáčaniaY(double)
,
stredOtáčaniaZ(double)
,
posuňStredOtáčania(double, double, double)
public void nastavStredOtacania(double nxs, double nys, double nzs)
Alias pre nastavStredOtáčania
.
public void nastavStredOtáčania(double[] bod)
Nastaví stred otáčania roja na základe hodnôt zadaného poľa. Metóda má zjednodušiť nastavenie polohy stredu otáčania roja berúc do úvahy spôsob práce smerníka. Ak je zadané pole aspoň trojprvkové, tak metóda berie do úvahy prvé tri jeho prvky. (Ak má pole menší počet prvkov, tak metóda nevykoná nič.)
bod
– súradnice bodu určujúce novú polohu stredu otáčania rojastredOtáčania()
,
nastavStredOtáčania(double, double, double)
public void nastavStredOtacania(double[] bod)
Alias pre nastavStredOtáčania
.
public void posuňStredOtáčania(double Δxs, double Δys, double Δzs)
Posunie súradnice stredu otáčania. (Pozri aj uhly alfa, beta a gama.)
Δxs
– miera zmeny x-ovej súradnice stredu otáčaniaΔys
– miera zmeny y-ovej súradnice stredu otáčaniaΔzs
– miera zmeny z-ovej súradnice stredu otáčaniastredOtáčaniaX()
,
stredOtáčaniaY()
,
stredOtáčaniaZ()
,
stredOtáčaniaX(double)
,
stredOtáčaniaY(double)
,
stredOtáčaniaZ(double)
,
nastavStredOtáčania(double, double, double)
public void posunStredOtacania(double Δxs, double Δys, double Δzs)
Alias pre posuňStredOtáčania
.
public void posuňStredOtáčania(double[] bod)
Posunie stred otáčania roja na základe hodnôt zadaného poľa. Metóda má zjednodušiť zmenu polohy stredu otáčania roja berúc do úvahy spôsob práce smerníka. Ak je zadané pole aspoň trojprvkové, tak metóda berie do úvahy prvé tri jeho prvky. (Ak má pole menší počet prvkov, tak metóda nevykoná nič.)
bod
– trojica polohových súradníc, o ktoré bude posunutá
poloha stredu otáčania rojanastavStredOtáčania(double[])
,
posuňStredOtáčania(double, double, double)
public void posunStredOtacania(double[] bod)
Alias pre posuňStredOtáčania
.
public double[] kamera()
Vráti aktuálnu polohu kamery vo forme trojprvkového poľa [kx, ky, kz].
nastavKameru(double[])
public double kameraX()
Vráti aktuálnu x-ovú súradnicu polohy kamery.
kameraY()
,
kameraZ()
,
kameraX(double)
,
kameraY(double)
,
kameraZ(double)
,
nastavKameru(double, double, double)
,
posuňKameru(double, double, double)
public double kameraY()
Vráti aktuálnu y-ovú súradnicu polohy kamery.
kameraX()
,
kameraZ()
,
kameraX(double)
,
kameraY(double)
,
kameraZ(double)
,
nastavKameru(double, double, double)
,
posuňKameru(double, double, double)
public double kameraZ()
Vráti aktuálnu z-ovú súradnicu polohy kamery.
kameraX()
,
kameraY()
,
kameraX(double)
,
kameraY(double)
,
kameraZ(double)
,
nastavKameru(double, double, double)
,
posuňKameru(double, double, double)
public void kameraX(double hodnota)
Nastaví novú x-ovú súradnicu polohy kamery.
hodnota
– nová hodnota x-ovej súradnice polohy kamerykameraX()
,
kameraY()
,
kameraZ()
,
kameraY(double)
,
kameraZ(double)
,
nastavKameru(double, double, double)
,
posuňKameru(double, double, double)
public void kameraY(double hodnota)
Nastaví novú y-ovú súradnicu polohy kamery.
hodnota
– nová hodnota y-ovej súradnice polohy kamerykameraX()
,
kameraY()
,
kameraZ()
,
kameraX(double)
,
kameraZ(double)
,
nastavKameru(double, double, double)
,
posuňKameru(double, double, double)
public void kameraZ(double hodnota)
Nastaví novú z-ovú súradnicu polohy kamery.
hodnota
– nová hodnota z-ovej súradnice polohy kamerykameraX()
,
kameraY()
,
kameraZ()
,
kameraX(double)
,
kameraY(double)
,
kameraZ(double)
,
nastavKameru(double, double, double)
,
posuňKameru(double, double, double)
public void nastavKameru(double nkx, double nky, double nkz)
Nastaví novú polohu kamery.
nkx
– nová hodnota x-ovej súradnice polohy kamerynky
– nová hodnota y-ovej súradnice polohy kamerynkz
– nová hodnota z-ovej súradnice polohy kamerykameraX()
,
kameraY()
,
kameraZ()
,
kameraX(double)
,
kameraY(double)
,
kameraZ(double)
,
posuňKameru(double, double, double)
public void nastavKameru(double[] bod)
Nastaví polohu kamery roja na základe hodnôt zadaného poľa. Metóda má zjednodušiť nastavenie polohy kamery roja berúc do úvahy spôsob práce smerníka. Ak je zadané pole aspoň trojprvkové, tak metóda berie do úvahy prvé tri jeho prvky. (Ak má pole menší počet prvkov, tak metóda nevykoná nič.)
bod
– súradnice bodu, na ktoré bude nastavená poloha kamerykamera()
,
nastavKameru(double, double, double)
public void posuňKameru(double Δkx, double Δky, double Δkz)
Posunie polohu kamery.
Δkx
– miera zmeny hodnoty x-ovej súradnice polohy kameryΔky
– miera zmeny hodnoty y-ovej súradnice polohy kameryΔkz
– miera zmeny hodnoty z-ovej súradnice polohy kamerykameraX()
,
kameraY()
,
kameraZ()
,
kameraX(double)
,
kameraY(double)
,
kameraZ(double)
,
nastavKameru(double, double, double)
public void posunKameru(double Δkx, double Δky, double Δkz)
Alias pre posuňKameru
.
public void posuňKameru(double[] bod)
Posunie polohu kamery roja na základe hodnôt zadaného poľa. Metóda má zjednodušiť zmenu polohy kamery roja berúc do úvahy spôsob práce smerníka. Ak je zadané pole aspoň trojprvkové, metóda berie do úvahy prvé tri jeho prvky. (Ak má pole menší počet prvkov, tak metóda nevykoná nič.)
bod
– súradnice bodu, o ktoré bude posunutá poloha kamerynastavKameru(double[])
,
posuňKameru(double, double, double)
public void posunKameru(double[] bod)
Alias pre posuňKameru
.
public double mierka()
Vráti aktuálnu hodnotu mierky roja. Mierka vo veľkej miere ovplyvňuje zobrazenie roja. Ak je nesprávne nastavená, výsledok je skreslený. Dá sa prirovnať k ohniskovej vzdialenosti objektívu.
mierka(double)
,
zmeňMierku(double)
public void mierka(double hodnota)
Nastaví novú hodnotu mierky roja. Pozri aj opis metódy mierka()
.
hodnota
– nová hodnota mierky zobrazenia rojamierka()
,
zmeňMierku(double)
public void zmeňMierku(double Δmierka)
Upraví hodnotu mierky roja. Pozri aj opis metódy mierka()
.
Δmierka
– miera zmeny hodnoty mierky zobrazenia rojamierka()
,
mierka(double)
public void zmenMierku(double Δmierka)
Alias pre zmeňMierku
.
public void transformovať()
Táto metóda vynúti prepočet konečných (globálne transformovaných)
súradníc x2
, y2
, z2
všetkých bodov roja pri
najbližšom kreslení alebo pri volaní metódy transformuj
. Volanie tejto metódy zároveň nastaví príznak
prepočítania atribútov použitých pri kreslení (premietaní) bodov
roja. (Pozri metódu: prepočítať
.)
prepočítať()
,
transformuj()
public void transformovat()
Alias pre transformovať
.
public void transformuj()
Táto metóda prepočíta hodnoty konečných (globálne transformovaných)
súradníc x2
, y2
, z2
všetkých bodov roja. Metóda používa vnútorný príznak
na overenie toho, či je prepočítanie potrebné. Ak chcete prepočítanie
vynútiť, musíte pred volaním tejto metódy zavolať metódu transformovať
.
transformovať()
,
prepočítaj()
,
transformuj(Roj.Bod)
public void transformuj(Roj.Bod bod)
Toto je metóda, ktorá prepočíta hodnoty konečných (globálne
transformovaných) súradníc x2
, y2
, z2
zadaného bodu roja.
bod
– inštancia bodu roja, ktorého atribúty majú byť prepočítanétransformuj()
public void prepočítať()
Táto metóda vynúti prepočet premietaných súradníc (x3
, y3
) a veľkostí kreslených objektov
(z3
) všetkých bodov roja pri najbližšom kreslení
alebo pri volaní metódy prepočítaj
.
transformovať()
,
prepočítaj()
public void prepocitat()
Alias pre prepočítať
.
public void prepočítaj()
Táto metóda prepočíta pre všetky body roja atribúty cieľovej
(premietanej) polohy na plátne a veľkosti objektu kresleného na
polohe bodu – hodnoty atribútov x3
,
y3
a z3
. Metóda používa
vnútorný príznak na overenie toho, či je prepočítanie potrebné.
Ak chcete prepočítanie vynútiť, musíte pred volaním tejto metódy
zavolať metódu prepočítať
.
prepočítať()
,
transformuj()
public void prepocitaj()
Alias pre prepočítaj
.
public void kresli()
Prekreslí roj s použitím kresliaceho robota roja.
Poznámka: Pred kreslením roja sú zálohované iba dve vlastnosti: farba a hrúbka čiary robota. Ich hodnoty sú obnovené až po nakreslení všetkých prvkov roja, čiže ak zákaznícke kreslenie objektu (telesa) v niektorom z bodov roja tieto vlastnosti zmenilo (a neobnovilo), tak sa zmeny prenesú do kreslenia ďalších prvkov roja…
Poznámka: Počas kreslenia je aktualizovaná
inštancia roja bod
, ktorá sa dá využiť pri zákaznícky
definovanom kreslení bodov roja (pozri kreslenie
).
public void pridajDoSVG(SVGPodpora svgPodpora)
Táto metóda slúži na export grafiky roja do zadanej inštancie
SVG podpory. Táto metóda automaticky spúšťa
metódy spojDoSVG
a telesoDoSVG
pre
jednotlivé body roja.
Poznámka: Počas exportu je aktualizovaná
inštancia roja bod
, ktorá sa dá využiť pri zákaznícky
definovanom exporte bodov roja (pozri svgKreslenie
).
svgPodpora
– inštancia SVG podpory,
do ktorej budú exportované tvary Javy
reprezentujúce všetky viditeľné spoje medzi bodmi roja a telesá
umiestnené v bodoch rojaRoj.Bod.spojDoSVG(SVGPodpora)
,
Roj.Bod.telesoDoSVG(SVGPodpora)
public static double[] normála(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)
Vypočíta zo zadaných súradníc troch bodov určujúcich plochu v priestore súradnice normálového vektora k tejto ploche a vráti jeho nenormalizované súradnice.
Inak povedané, metóda vypočíta súradnice smerového vektora kolmice
k ploche, tento vektor však neprepočíta na jednotkový,
ale ho vráti v (kvázi) „surovom“ stave. (Na väčšinu účelov by mal
postačovať aj nenormalizovaný vektor. V prípade potreby použite metódu
normalizuj
.)
x1
– x-ová súradnica prvého boduy1
– y-ová súradnica prvého boduz1
– z-ová súradnica prvého bodux2
– x-ová súradnica druhého boduy2
– y-ová súradnica druhého boduz2
– z-ová súradnica druhého bodux3
– x-ová súradnica tretieho boduy3
– y-ová súradnica tretieho boduz3
– z-ová súradnica tretieho bodupublic static double[] normala(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)
Alias pre normála
.
public static double[] normalizuj(double[] vektor)
Normalizuje vektor zadaných súradníc. Táto metóda pracuje
s ľubovoľne veľkým vektorom a normalizuje všetky súradnice podľa
dĺžky vektora. To znamená, že ak má vektor šesť súradníc
(pozri smerník.dajStav()
), tak metóda
vzájomne normalizuje všetkých šesť súradníc dohromady (akoby išlo
napríklad o šesťrozmerný bod)! Návratovou hodnotou je rovnaké
pole, ktoré bolo zadané vo vstupnom parametri vektor
, len
s prepočítanými súradnicami. (To znamená, že všetky zmeny sa
rovnako prejavia aj vo vstupnom poli – ide o rovnakú inštanciu
poľa.)
vektor
– vektor súradníc určených na normalizáciupublic static double[] uhlyK(double x, double y, double z)
Vráti uhly potrebné na pootočenie jednotkového vektora paralelného s osou z okolo osí x (prvý prvok poľa v návratovej hodnote označovaný v tejto dokomentácii aj ako uhol α) a y (druhý prvok poľa v návratovej hodnote označovaný v tejto dokomentácii aj ako uhol β) tak, aby výsledný vektor smeroval k zadanému polohovému vektoru.
x
– x-ová súradnica polohového vektoray
– y-ová súradnica polohového vektoraz
– z-ová súradnica polohového vektorapublic static double[] uhlyK(double[] vektor)
Vráti uhly potrebné na pootočenie jednotkového vektora paralelného
s osou z okolo osí x (prvý prvok poľa v návratovej hodnote označovaný
v tejto dokomentácii aj ako uhol α) a y (druhý prvok poľa v návratovej
hodnote označovaný v tejto dokomentácii aj ako uhol β) tak, aby
výsledný vektor smeroval k zadanému polohovému vektoru. Ak zadaný
vektor neobsahuje aspoň tri prvky, tak metóda vráti hodnotu null
.
vektor
– polohový vektor súradnícnull
public Roj.Bod dajBodNa(double súradnicaX, double súradnicaY, double polomer)
Zistí, či sa projekcia niektorého bodu roja nachádza na zadaných
súradniciach. Metóda využíva metódu bodu roja:
bodV
. Bod, ktorý vyhovie
podmienke je vrátený. Ak nie je nájdený žiadny bod, tak metóda vráti
hodnotu null
.
súradnicaX
– x-ová súradnica bodusúradnicaY
– y-ová súradnica bodupolomer
– polomer vyšetrovaného kruhu (pozri bodV
)null
public Roj.Bod dajBodNa(Poloha objekt, double polomer)
Zistí, či sa projekcia niektorého bodu roja nachádza na
súradniciach zadaného objektu. Metóda využíva metódu bodu roja:
bodV
. Bod, ktorý vyhovie
podmienke je vrátený. Ak nie je nájdený žiadny bod, tak metóda vráti
hodnotu null
.
objekt
– objekt, ktorého poloha je použitá na overenie bodovpolomer
– polomer vyšetrovaného kruhu (pozri bodV
)null
public Roj.Bod dajBodNa(double súradnicaX, double súradnicaY)
Zistí, či sa projekcia niektorého bodu roja nachádza na zadaných
súradniciach. Metóda využíva metódu bodu roja: bodV
. Bod, ktorý vyhovie podmienke je vrátený. Ak nie je
nájdený žiadny bod, tak metóda vráti hodnotu null
.
súradnicaX
– x-ová súradnica bodusúradnicaY
– y-ová súradnica bodunull
public Roj.Bod dajBodNa(Poloha objekt)
Zistí, či sa projekcia niektorého bodu roja nachádza na
súradniciach zadaného objektu. Metóda využíva metódu bodu roja:
bodV
. Bod, ktorý vyhovie
podmienke je vrátený. Ak nie je nájdený žiadny bod, tak metóda vráti
hodnotu null
.
objekt
– objekt, ktorého poloha je použitá na overenie bodovnull
public Roj.Bod dajBodNaMyši(double polomer)
Zistí, či sa projekcia niektorého bodu roja nachádza na
súradniciach myši. Metóda využíva metódu bodu roja: myšV
. Bod, ktorý vyhovie podmienke je vrátený.
Ak nie je nájdený žiadny bod, tak metóda vráti hodnotu
null
.
polomer
– polomer vyšetrovaného kruhu (pozri myšV
)null
public Roj.Bod dajBodNaMysi(double polomer)
Alias pre dajBodNaMyši
.
public Roj.Bod dajBodNaMyši()
Zistí, či sa projekcia niektorého bodu roja nachádza na
súradniciach myši. Metóda využíva metódu bodu roja: myšV
. Bod, ktorý vyhovie podmienke je vrátený. Ak nie je nájdený
žiadny bod, tak metóda vráti hodnotu null
.
null
public Roj.Bod dajBodNaMysi()
Alias pre dajBodNaMyši
.
public void čítajZoSúboru(Súbor súbor, String identifikátor) throws IOException
Prečíta údaje o roji z konfiguračného súboru otvoreného na čítanie.
Metóda prijíma identifikátor menného priestoru. Identifikátor smie mať
hodnotu null
. V takom prípade sú údaje čítané z aktuálneho
menného priestoru zadaného konfiguračného súboru.
súbor
– inštancia triedy Súbor
otvorená
na čítanieidentifikátor
– vnorený menný priestor, z ktorého budú
prevzaté údaje o rojiIOException
– ak vznikla chyba vo vstupno-výstupnej
operáciipublic void citajZoSuboru(Súbor súbor, String identifikátor) throws IOException
Alias pre čítajZoSúboru
.
IOException
public void prečítajZoSúboru(Súbor súbor, String identifikátor) throws IOException
Alias pre čítajZoSúboru
.
IOException
public void precitajZoSuboru(Súbor súbor, String identifikátor) throws IOException
Alias pre čítajZoSúboru
.
IOException
public void uložDoSúboru(Súbor súbor, String identifikátor) throws IOException
Zapíše údaje o roji do konfiguračného súboru otvoreného na zápis.
Metóda prijíma identifikátor menného priestoru. Identifikátor smie mať
hodnotu null
. V takom prípade sú údaje ukladané do
aktuálneho menného priestoru zadaného konfiguračného súboru.
súbor
– inštancia triedy Súbor
otvorená
na zápisidentifikátor
– vnorený menný priestor, do ktorého budú
vložené údaje o rojiIOException
– ak vznikla chyba vo vstupno-výstupnej
operáciipublic void ulozDoSuboru(Súbor súbor, String identifikátor) throws IOException
Alias pre uložDoSúboru
.
IOException