Commit 37a16e64 authored by Bošániová Monika's avatar Bošániová Monika
Browse files

LaTex Update

parent 3bf02f97
\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
......
\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
......@@ -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
......@@ -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
......
......@@ -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-15T01:25:51+02:00</xmp:ModifyDate>
<xmp:CreateDate>2021-07-15T01:25:51+02:00</xmp:CreateDate>
<xmp:MetadataDate>2021-07-15T01:25:51+02:00</xmp:MetadataDate>
<xmp:ModifyDate>2021-07-15T15:29:49+02:00</xmp:ModifyDate>
<xmp:CreateDate>2021-07-15T15:29:49+02:00</xmp:CreateDate>
<xmp:MetadataDate>2021-07-15T15: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>
......
No preview for this file type
No preview for this file type
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment