Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Bošániová Monika
Rubics_cube
Commits
37a16e64
Commit
37a16e64
authored
Jul 15, 2021
by
Bošániová Monika
Browse files
LaTex Update
parent
3bf02f97
Changes
12
Hide whitespace changes
Inline
Side-by-side
latex/img/2Dmap.png
0 → 100644
View file @
37a16e64
19.1 KB
latex/img/2SMapAlternative.png
0 → 100644
View file @
37a16e64
40.9 KB
latex/img/RotationModeButton.png
0 → 100644
View file @
37a16e64
5 KB
latex/img/editationModeButton.png
0 → 100644
View file @
37a16e64
9.01 KB
latex/img/undoRedoButtons.png
0 → 100644
View file @
37a16e64
5.13 KB
latex/kapitoly/analyza.tex
View file @
37a16e64
\chapter
{
Analýza a požiadavky
}
\section
{
Existujúce projekty a riešiče
}
\subsection
{
Kociemba
}
\section
{
Priority projektu
}
\subsection
{
Jednoduchosť ovládania
}
\subsection
{
Efektívnosť
}
\section
{
Užívateľské prostredie
}
\subsection
{
Kamera
}
\subsection
{
Riešič
}
\subsection
{
Rotácie
}
\subsection
{
Svetlo
}
\subsection
{
2D mapa
}
\subsection
{
3D model
}
\subsection
{
Farbenie strán
}
\subsection
{
Posúvanie krokov
}
Prvotné spracovanie práce kamery bolo statické. To znamenalo, že kamera bola pevne ukotvená
na svojej pozícii, kde snímala hornú a dve bočné strany kocky. Tým pádom, ak užívateľ
chcel nahliadnuť na steny, ktoré v danom momente nevidel, buď bol nútený použiť 2D zobrazenie modelu
...
...
latex/kapitoly/navrh.tex
View file @
37a16e64
\chapter
{
Návrh projektu a jeho ciele
}
\section
{
Ciele projektu
}
\subsection
{
Jednoduchosť ovládania
}
\subsection
{
Efektívnosť
}
\section
{
Prostriedky k dosiahnutiu cielov
}
\chapter
{
Špecifikácia systému
}
\ No newline at end of file
latex/kapitoly/reseni.tex
View file @
37a16e64
...
...
@@ -71,10 +71,10 @@ s názvom SceneLoader.
Pre zvýraznenie pocitu nekonečna a vytvorenie hlbšieho 3D efektu modelu, je nastavený na kamere tzv.
Skybox. Má nastavený dizajn vesmíru a doľadzuje tmavý štýl celej aplikácie.
Čo sa týka interakcie s užívateľom, ovládanie
je predvolene nastavené na pravé tlačidlo myši.
Ovládanie užívateľom
je predvolene nastavené na pravé tlačidlo myši.
Používateľovi stačí držať a ťahať intuitívne v smere, v akom sa chce posunúť. K nahliadnutiu
sú všetky steny kocky. Jedinou limitáciou je, že užívateľ nemôže prekročiť hornú a spodnú hranicu
orbitu.
Inak povedané,
nie je dovolené, aby užívateľ mohol rotovať okolo modelu po ypsilonovej
orbitu.
Teda
nie je dovolené, aby užívateľ mohol rotovať okolo modelu po ypsilonovej
súradnici 360 stupňov.
...
...
@@ -112,54 +112,104 @@ s názvom SceneLoader.
hodnôt nájdených na stránke (link).
Model je predvolene otočený bielou stranou hore. To je z dôvodu, že väčšina riešičov (referencia)
Rubikových kociek odporúča držať kocku touto stenou hore, no ide iba o orientáciu.
S efektivitou posladania tohto hlavolamu to nemá žiadnu súvislosť.
\subsection
{
Pohyby a rotácie
}
Ako sme už spomínali v kapilote (link) vyššie, pohyb okolo celého modelu kocky
zabezpečuje kamera, ktorá rotuje po orbite okolo.
Aby sme zjednodušili ovládanie aplikácie pre užívateľov, sme pridali funkcionalitu
otáčania jednotlivých strán kocky. Steny sa môžu otáčať iba v rotáciách, ktoré
neobsahujú ich stredné časti. Využíva sa oficiálne pomenovanie z kapitoty 1.1.2.
Rubikových kociek odporúča držať kocku touto stenou hore.
S efektivitou poskladania tohto hlavolamu to nemá žiadnu súvislosť. Fixnú stenu
\subsection
{
Možnosti pomiešania modelu
}
V aplikácii sme naimplementovali viacero možností rozloženia hlavolami, aby si sám užívateľ
mohol vybrať, ktorý z nich mu vyhovuje najviac.
\subsubsection
{
Tlačidlo rozmiešania
}
Pre uľahčenie a zrýchlenie učebného procesu užívateľov, sme pridali samostatné tlačidlo, ktoré
im pripravý rozložený hlavolam. Stačí naň kliknúť a program sám vygeneruje sekvenciu ťahov, ktoré
sa automaticky začnú vykonávať. Notácia ťahov je opísaná v kapitole 1.2.2.
Používateľ je schopný kedykoľvek zastaviť animáciu a presúvať sa v rade príkazov tlačidlami, ktoré sú opísané
v kapitole 5.2.6
\subsubsection
{
Pohyby a rotácie
}
Ako sme už spomínali v kapilote (link) vyššie, pohyb okolo celého modelu kocky
zabezpečuje kamera, ktorá rotuje po orbite okolo.
Aby sme zjednodušili ovládanie aplikácie pre užívateľov, sme pridali funkcionalitu
otáčania jednotlivých strán kocky. Steny sa môžu otáčať iba v rotáciách, ktoré
neobsahujú ich stredné časti. Využíva sa oficiálne pomenovanie z kapitoty 1.1.2.
\subsubsection
{
Farbenie presných častí kocky
}
Na rozdiel od rozloženia kocky pomocou rotácií a ťahov, sme pre uľahčenie prístupu zvolili aj iný
spôsob namapovania ich aktuálneho problému, ktorý chcú poskladať.
Pre lepší prehľad, ako dostal užívateľ určité časti na svoje miesta. Z tohto dôvodu naša aplikácia
podporuje zmenu režimu z rotácií na farbenie každej malej časti zvlášť podľa vybranej farby.
Farba premaľovávanie je predvolene biela.
Pre zvolenie a zafarbenie danej časti stačí užívateľovi vybrať farbu a kliknúť ľavým tlačidlom
myši na danú časť. Tento proces funguje nasledovne. Každá kocka, ktorá reprezentuje farebnú
časť strany, má nastavený tzv. box collider, ktorý zaznamenáva interakcie s daným objektom.
Kocka, ktorá má k sebe tieto komponenty pridružené, má box collider vypnutý.
Hlavným dôvodom je, že ak by užívateľ klikol veľmi blízko hranice, ktorá oddeľuje farebnú časť
od čierneho podkladu, mohlo by sa stať, že by narušil jednotnosť a materiál základnej stavebnej jednotky
modelu. Preto je vypnutá možnosť s ňou nejak interagovať.
Z hlavnej kamery sa nám vysiela laser.
Každý Box Collider pre jednotlivé farebné plôšky je zväčšený o desať percent z každej strany,
čo zabezpečuje vyplnenie celej steny kocky, a teda sa nestane, že by laser prešiel na druhú stranu.
Užívateľovi sme zamedzili možnosť prefarbiť viacero stien jednou farbou. Ide o veľmi jednoduché
riešenie. Každá stredová plôška farebnej steny má nastavenú značku (angl. tag) s názvom Centre (prekl. stred).
Preto, keď kamera vyšle laser na pozíciu, kde ukazuje kurzor myši a zasiahne objekt s touto značkou,
bude ignorovať nasledujúcu zmenu materálu, ktorá by za normálnych okolností nastala. Teda používateľovi
nie je dovolené zmeniť farbu stredovej časti strany modelu.
Ak by sa užívateľ chcel vrátiť späť do režimu rotácii klikne na tlačidlo s nápisom Edit.
\subsection
{
2D Mapa Kocky
}
K ľavému hornému rohu je ukotvená 2D mapa modelu Rubikovej kocky.
\subsection
{
Farbenie presných častí kocky
}
Na rozdiel od rozloženia kocky pomocou rotácií a ťahov, sme pre uľahčenie prístupu zvolili aj iný
spôsob namapovania ich aktuálneho problému, ktorý chcú poskladať.
Pre lepší prehľad, ako dostal užívateľ určité časti na svoje miesta. Z tohto dôvodu naša aplikácia
podporuje zmenu režimu z rotácií na farbenie každej malej časti zvlášť podľa vybranej farby.
Farba premaľovávanie je predvolene biela.
Pre zvolenie a zafarbenie danej časti stačí užívateľovi vybrať farbu a kliknúť ľavým tlačidlom
myši na danú časť. Tento proces funguje nasledovne. Každá kocka, ktorá reprezentuje farebnú
časť strany, má nastavený tzv. box collider, ktorý zaznamenáva interakcie s daným objektom.
Kocka, ktorá má k sebe tieto komponenty pridružené, má box collider vypnutý.
Hlavným dôvodom je, že ak by užívateľ klikol veľmi blízko hranice, ktorá oddeľuje farebnú časť
od čierneho podkladu, mohlo by sa stať, že by narušil jednotnosť a materiál základnej stavebnej jednotky
modelu. Preto je vypnutá možnosť s ňou nejak interagovať.
\begin{figure}
[H]
\centering
\includegraphics
[width=.4\linewidth]
{
img/2Dmap.png
}
\caption
[Ukážka 2D zobrazenia modelu]
{
Ukážka 2D zobrazenia modelu
}
\end{figure}
(analyza)
Z hlavnej kamery sa nám vysiela laser.
Každý Box Collider pre jednotlivé farebné plôšky je zväčšený o desať percent z každej strany,
čo zabezpečuje vyplnenie celej steny kocky, a teda sa nestane, že by laser prešiel na druhú stranu.
\subsection
{
Posun v sekvencii ťahov
}
Užívateľovi sme zamedzili možnosť prefarbiť viacero stien jednou farbou. Ide o veľmi jednoduché
riešenie. Každá stredová plôška farebnej steny má nastavenú značku (angl. tag) s názvom Centre (prekl. stred).
Preto, keď kamera vyšle laser na pozíciu, kde ukazuje kurzor myši a zasiahne objekt s touto značkou,
bude ignorovať nasledujúcu zmenu materálu, ktorá by za normálnych okolností nastala. Teda používateľovi
nie je dovolené zmeniť farbu stredovej časti strany modelu.
Ak by sa užívateľ chcel vrátiť späť do režimu rotácii klikne na tlačidlo s nápisom Edit.
\subsection
{
2D Mapa Kocky
}
\section
{
Riešič
}
\subsection
{
Začiaočnícky riešič
}
Pri implementácii riešičov, sme zakomponovali dva pohľady na túto problematiku.
Jedným je začiatočnícky princíp, ktorým som sa ja osobne učila riešiť problém Rubikovej kocky.
Druhý je pokročilejší. Jedná sa o algoritmus Kociemba, ktorý je spomínaný v kapitole 2.1.1., keďže
nepatrí k tým najľahším a navyše je určený skôr pre počítače ako ľudské bytosti, sme ho pridali
z dôvodu uľahčenia a rýchlejšieho vrátenia modelu do pôvodného stavu, či rozšírenia povedomia používateľov
o viacerých druhoch riešičov.
\subsection
{
Začiatočnícky riešič
}
\subsubsection
{
Myšlienka
}
Hlavnou myšlienkou je poskladať Rubikovu kocku po krokoch. To znamená začať pomaly presúvať
jednotlivé kocky na svoje miesto, bez toho, aby sa porušil doterajší pokrok. Teda sekvencia ťahov
musí aktuálny stav hlavolamu priblížiť bližšie k riešniu.
Vstup od užívateľa musíme predtým skontrolovať, či náhodou nie je chybný.
Ak by používateĺ používal iba tlačidlo a rotácie jednotlivých strán, tak by táto kontrola bola zbytočná.
Nakoľko sme ale pridali funkciu zafarbovanie jednotlivých plôšok, ako píšeme v kapitole 5.2.4., je istá
pravdepodobnosť chyby zadávania vstupu od užívateľa. Preto musíme zamedziť takémuto stavu.
\subsubsection
{
Algoritmus
}
\subsection
{
Kociemba
}
\ No newline at end of file
Najprv spustíme algoritmus Kociemba (kapitola 5.3.2), ktorá nám veľmi efektívne a rýchlo povie, riešiteľnosť
problému. V prípade chyby, dostaneme spätne aj dôvod, aký problém nastal. Následne je na užívateľovi, aby vstup zadaný ním skontroloval
ešte raz.
Ak je všetko v poriadku ďalej postupujeme v hľadaní riešenia. Budeme pomaly pokračovať podľa riadkov modelu.
Začneme pri hornej stene. V realite nezáleží, ktorú zo strán si
užívateľ zvolí ako prvú. My sme predvolene vybrali bielu.
\textbf
{
Prvý krok -- biela stena
}
\textbf
{
Druhý krok -- druhý riadok
}
\textbf
{
Tretí krok -- rohy v treťom riadku
}
\textbf
{
Štvrtý krok -- hrany v treťom riadku
}
\subsection
{
Kociemba
}
Algoritmus Kociemba je opísaný v kapitole 2.1.1. Na implementáciu tohto riešiča sme použili
už napísanú knižnicu zo stránky gitHub (link).
Celá knižnica je už vopred pripravená pre prostredie Unity, čo nám veľmi uľahčilo prácu.
Rovnako ju používame na zisťovanie, či daná permutácia Rubikovej kocky je zložiteľná.
\ No newline at end of file
latex/kapitoly/uvod.tex
View file @
37a16e64
...
...
@@ -48,7 +48,8 @@ Akékoľvek nepovolené narábanie s~modelom, môže viesť k~neriešiteľnosti
Existuje viacero spôsobov, ako môžeme dané otočenia nazvať. V~celom programe používame tzv.
\textbf
{
Singmasterovskú notáciu
}
(link). Rotácie, ktoré budeme používať sme spísali do nasledujúcej tabuľky.
\begin{table}
[b!]
\begin{table}
[H]
\begin{center}
\begin{tabular}
{
||c|c||
}
\hline
...
...
latex/pdfa.xmpi
View file @
37a16e64
...
...
@@ -80,15 +80,15 @@
</rdf:Description>
<rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/">
<xmp:CreatorTool>LaTeX with hyperref</xmp:CreatorTool>
<xmp:ModifyDate>2021-07-15T
01:25:51
+02:00</xmp:ModifyDate>
<xmp:CreateDate>2021-07-15T
01:25:51
+02:00</xmp:CreateDate>
<xmp:MetadataDate>2021-07-15T
01:25:51
+02:00</xmp:MetadataDate>
<xmp:ModifyDate>2021-07-15T
15:29:49
+02:00</xmp:ModifyDate>
<xmp:CreateDate>2021-07-15T
15:29:49
+02:00</xmp:CreateDate>
<xmp:MetadataDate>2021-07-15T
15:29:49
+02:00</xmp:MetadataDate>
</rdf:Description>
<rdf:Description rdf:about="" xmlns:xmpRights = "http://ns.adobe.com/xap/1.0/rights/">
</rdf:Description>
<rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">
<xmpMM:DocumentID>uuid:E471EDA9-0143-B4EC-2929-27CBFE26697B</xmpMM:DocumentID>
<xmpMM:InstanceID>uuid:
DD85FE31-ECBC-08E1-D656-B1943DFFF93F
</xmpMM:InstanceID>
<xmpMM:InstanceID>uuid:
EA90947E-895A-794C-2148-81A7CD9C2009
</xmpMM:InstanceID>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
...
...
latex/prace.pdf
View file @
37a16e64
No preview for this file type
latex/prace.synctex.gz
View file @
37a16e64
No preview for this file type
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment