Up to CMAKE
This commit is contained in:
@@ -195,17 +195,17 @@ IZJAVA O AVTORSTVU ZAKLJUČNEGA DELA
|
||||
|
||||
|
||||
= UVOD
|
||||
V današnjem digitalnem svetu je interaktivnost in prilagodljivost ključnega pomena za ustvarjanje uporabniških izkušenj, ki so tako zabavne kot tudi funkcionalne. Fraktalna drevesa, kot matematična in umetniška oblika, ponujajo neskončno raznolikost struktur, ki jih je mogoče uporabiti v raznovrstnih aplikacijah, od vizualnih umetnosti do simulacij naravnih procesov. V tem kontekstu se pojavi vprašanje: *Kako lahko uporabniki aktivno vplivajo na razvoj in oblikovanje teh struktur?*
|
||||
V današnjem digitalnem svetu sta interaktivnost in prilagodljivost ključnega pomena za ustvarjanje uporabniških izkušenj, ki so tako zabavne kot tudi funkcionalne. Fraktalna drevesa kot matematična in umetniška oblika ponujajo neskončno raznolikost struktur, ki jih je mogoče uporabiti v raznovrstnih aplikacijah, od vizualnih umetnosti do simulacij naravnih procesov. V tem kontekstu se pojavi vprašanje: *kako lahko uporabniki aktivno vplivajo na razvoj in oblikovanje teh struktur?*
|
||||
|
||||
Ta diploma se osredotoča na razvoj aplikacije *Treender*, ki uporabnikom omogoča interaktivno vodenje evolucije fraktalnih dreves. S pomočjo algoritmov za genetsko evolucijo in uporabniških ocen aplikacija ustvarja in prilagaja fraktalna drevesa, ki odražajo individualne okuse in preference uporabnikov.
|
||||
|
||||
Cilj projekta je raziskati, kako lahko algoritmi za evolucijo in z uporabniško povratno informacijo ustvarimo dinamične in osebne izkušnje.
|
||||
Cilj projekta je raziskati, kako lahko z algoritmi za evolucijo in uporabniško povratno informacijo ustvarimo dinamične in osebne izkušnje.
|
||||
|
||||
V nadaljevanju bomo predstavili osnovne koncepte za generiranje in evolucijo fraktalnih dreves, opisali strukturo aplikacije in podrobno razložili uporabljene algoritme. Prav tako bomo raziskali uporabniški vmesnik in proces objave aplikacije na Google Play Store. Na koncu bomo oceni uporabniško izkušnjo in učinkovitost algoritmov, ki jih uporabljamo.
|
||||
V nadaljevanju bomo predstavili osnovne koncepte za generiranje in evolucijo fraktalnih dreves, opisali strukturo aplikacije in podrobno razložili uporabljene algoritme. Prav tako bomo raziskali uporabniški vmesnik in proces objave aplikacije na Google Play Store. Na koncu bomo ocenili uporabniško izkušnjo in učinkovitost algoritmov, ki jih uporabljamo.
|
||||
#pagebreak()
|
||||
|
||||
= OPIS APLIKACIJE
|
||||
Treender je aplikacije, ki nam omogoča, da izbiramo in ocenjujemo fraktalna drevesa, ki se na podlagi naših ocen evoluirajo in prilagajajo našim okusom. V desnem zgornjem kotu nam prikaže všečnost, na dnu nam pa prikaže generacijo evolucije in kateri vzorec se prikazuje (@aplikacija-slika-def). Če povlečemo po zaslonu levo se nam v zgornjem levem kotu prikaže napis "DISLIKE" (@aplikacija-slika-dislike) v desno pa se nam prikaže napis "LIKE" (@aplikacija-slika-like).
|
||||
Treender je aplikacija, ki nam omogoča, da izbiramo in ocenjujemo fraktalna drevesa, ki se na podlagi naših ocen razvijajo in prilagajajo našim okusom. V desnem zgornjem kotu nam prikaže všečnost, na dnu nam pa prikaže generacijo evolucije in kateri vzorec se prikazuje (@aplikacija-slika-def). Če povlečemo po zaslonu levo se nam v zgornjem levem kotu prikaže napis "DISLIKE" (@aplikacija-slika-dislike), v desno pa se nam prikaže napis "LIKE" (@aplikacija-slika-like).
|
||||
|
||||
#grid(
|
||||
columns: 3,
|
||||
@@ -230,7 +230,7 @@ Treender je aplikacije, ki nam omogoča, da izbiramo in ocenjujemo fraktalna dre
|
||||
],
|
||||
)
|
||||
|
||||
Ko vzorec ocenimo si aplikacija zapomni in nato, ko ocenimo vse vzorce se nam prikaže črna slika z napisom "new generation". V tem trenutku se glede na ocenitve ustvari nova generacija in izračuna všečnost.
|
||||
Ko vzorec ocenimo, si aplikacija zapomni, in ko ocenimo vse vzorce, se nam prikaže črna slika z napisom "new generation". V tem trenutku se glede na ocenitve ustvari nova generacija in izračuna všečnost.
|
||||
|
||||
|
||||
#pagebreak()
|
||||
@@ -238,13 +238,13 @@ Ko vzorec ocenimo si aplikacija zapomni in nato, ko ocenimo vse vzorce se nam pr
|
||||
= UPORABLJENE TEHNOLOGIJE
|
||||
|
||||
== C++
|
||||
C++ je visokonivojni programski jezik, ki je nastal kot razširitev jezika C. Razvil ga je Bjarne Stroustrup v zgodnjih 1980-ih letih z namenom, da združi moč in učinkovitost jezika C z objektno-usmerjenimi koncepti, ki podpirajo boljšo organizacijo in ponovno uporabo kode @wiki_cpp.
|
||||
C++ je visokonivojni programski jezik, ki je nastal kot razširitev jezika C. Razvil ga je Bjarne Stroustrup v zgodnjih 1980. letih z namenom, da združi moč in učinkovitost jezika C z objektno usmerjenimi koncepti, ki podpirajo boljšo organizacijo in ponovno uporabo kode @wiki_cpp.
|
||||
|
||||
=== Glavne značilnosti C++:
|
||||
|
||||
1. *Objektno-usmerjeno programiranje (OOP)*: C++ podpira objektno-usmerjeno programiranje, kar omogoča uporabo razredov in objektov za modeliranje realnih svetovnih problemov. To olajša organizacijo kode in omogoča ponovno uporabo kode.
|
||||
1. *Objektno usmerjeno programiranje (OOP)*: C++ podpira objektno usmerjeno programiranje, kar omogoča uporabo razredov in objektov za modeliranje realnih svetovnih problemov. To olajša organizacijo kode in omogoča ponovno uporabo kode.
|
||||
|
||||
2. *Učinkovitost*: C++ je znan po svoji visoki učinkovitosti in hitrosti izvajanja, kar ga naredi primerno za razvoj aplikacij, ki zahtevajo visoko zmogljivost, kot so igre, sistemsko programiranje in razvoj vgrajenih sistemov.
|
||||
2. *Učinkovitost*: C++ je znan po svoji visoki učinkovitosti in hitrosti izvajanja, kar ga naredi primernega za razvoj aplikacij, ki zahtevajo visoko zmogljivost, kot so igre, sistemsko programiranje in razvoj vgrajenih sistemov.
|
||||
|
||||
3. *Nizkonivojni dostop*: C++ omogoča dostop do spomina in drugih sistemskih virov na nizki ravni, kar omogoča večjo kontrolo nad strojno opremo. To je posebno koristno v sistemskem programiranju in razvoju vgrajenih sistemov.
|
||||
|
||||
@@ -254,7 +254,7 @@ C++ je visokonivojni programski jezik, ki je nastal kot razširitev jezika C. Ra
|
||||
|
||||
=== Uporaba C++:
|
||||
|
||||
- *Razvoj iger*: Zaradi svoje visoke učinkovitosti in možnosti za nizkonivojni dostop je C++ priljubljen jezik za razvoj iger.
|
||||
- *Razvoj iger*: Zaradi svoje visoke učinkovitosti in možnosti za nizkonivojni dostop je \ C++ priljubljen jezik za razvoj iger.
|
||||
- *Sistemsko programiranje*: Uporablja se za razvoj operacijskih sistemov, gonilnikov in drugih sistemskih programov.
|
||||
- *Vgrajeni sistemi*: Zaradi svoje učinkovitosti in možnosti za nizkonivojni dostop je C++ priljubljen za razvoj vgrajenih sistemov.
|
||||
- *Računalniška grafika*: Uporablja se za razvoj grafičnih aplikacij in orodij za obdelavo slik.
|
||||
@@ -271,7 +271,7 @@ Raylib je odprtokodna knjižnica, namenjena predvsem razvoju iger in multimedijs
|
||||
|
||||
2. *Podpora za 2D in 3D grafiko*: Raylib podpira tako 2D kot 3D grafiko, kar omogoča razvoj različnih vrst iger in aplikacij.
|
||||
|
||||
3. *Vhodne naprave*: Podpira različne vhodne naprave, kot so tipkovnica, miška, igralni nadzorniki in dotikalni zasloni.
|
||||
3. *Vhodne naprave*: Podpira različne vhodne naprave, kot so tipkovnica, miška, igralni nadzorniki in zaslon na dotik.
|
||||
|
||||
4. *Zvok*: Vključuje osnovno podporo za predvajanje zvoka in glasbe, kar je pomembno za razvoj iger.
|
||||
|
||||
@@ -289,7 +289,7 @@ Raylib je zaradi svoje preprostosti in zmogljivosti priljubljen izbir za razvija
|
||||
#pagebreak()
|
||||
|
||||
== ImGui
|
||||
Dear ImGui (ali preprosto ImGui) je odprtokodna knjižnica uporabniškega vmesnika, ki omogoča hitro in enostavno ustvarjanje uporabniških vmesnikov za aplikacije v realnem času. Zasnovana je za razvijalce, ki potrebujejo preprost in učinkovit način za dodajanje uporabniških vmesnikov v svoje aplikacije, predvsem v igrah, orodjih in drugih interaktivnih programih @git_imgui @git_rlImgui.
|
||||
Dear ImGui (ali preprosto ImGui) je odprtokodna knjižnica, ki omogoča hitro in enostavno ustvarjanje uporabniških vmesnikov za aplikacije v realnem času. Zasnovana je za razvijalce, ki potrebujejo preprost in učinkovit način za dodajanje uporabniških vmesnikov v svoje aplikacije, predvsem v igrah, orodjih in drugih interaktivnih programih @git_imgui @git_rlImgui.
|
||||
|
||||
=== Glavne značilnosti ImGui:
|
||||
|
||||
@@ -309,23 +309,23 @@ Dear ImGui (ali preprosto ImGui) je odprtokodna knjižnica uporabniškega vmesni
|
||||
- *Interaktivna orodja*: Uporablja se za razvoj različnih interaktivnih orodij, kot so simulacije, vizualizacije podatkov in druge aplikacije, ki zahtevajo uporabniški vmesnik.
|
||||
- *Prototipiranje*: Zaradi svoje enostavnosti in hitrosti je ImGui priljubljen za prototipiranje uporabniških vmesnikov.
|
||||
|
||||
ImGui je zaradi svoje preprostosti, učinkovitosti in fleksibilnosti priljubljen izbir za razvijalce, ki potrebujejo hitro in enostavno rešitev za ustvarjanje uporabniških vmesnikov v svojih aplikacij
|
||||
ImGui je zaradi svoje preprostosti, učinkovitosti in fleksibilnosti priljubljena izbira za razvijalce, ki potrebujejo hitro in enostavno rešitev za ustvarjanje uporabniških vmesnikov v svojih aplikacijah
|
||||
#pagebreak()
|
||||
|
||||
== CMAKE
|
||||
*CMake* je orodje za avtomatizacijo gradnje (build automation tool), ki je zasnovano za upravljanje procesa prevajanja, sestavljanja in paketiranja programske kode, zlasti v večplatformskih okoljih. Razvil ga je Kitware leta 2000, da bi olajšal proces gradnje programov, ki so napisani v različnih programskih jezikih, kot so C, C++, Fortran in drugi @web_cmake @wiki_cmake.
|
||||
*CMake* je orodje za avtomatizacijo gradnje (build automation tool), ki je zasnovano za upravljanje procesa prevajanja, sestavljanja in paketiranja programske kode zlasti v večplatformskih okoljih. Razvil ga je Kitware leta 2000, da bi olajšal proces gradnje programov, ki so napisani v različnih programskih jezikih, kot so C, C++, Fortran in drugi @web_cmake @wiki_cmake.
|
||||
|
||||
=== Glavne značilnosti CMake:
|
||||
|
||||
1. *Večplatformska podpora* CMake omogoča generiranje gradbenih datotek (npr. Makefile za Unix/Linux, projektne datoteke za Visual Studio na Windowsu, Xcode na macOS) za različne operacijske sisteme in razvojna okolja. To pomeni, da lahko isti izvorni kod prevajate in sestavljate na različnih platformah brez spreminjanja gradbenih skript.
|
||||
1. *Večplatformska podpora:* CMake omogoča generiranje gradbenih datotek (npr. Makefile za Unix/Linux, projektne datoteke za Visual Studio na Windowsu, Xcode na macOS) za različne operacijske sisteme in razvojna okolja. To pomeni, da lahko isto izvorno kodo prevajamo in sestavljamo na različnih platformah brez spreminjanja gradbenih skript.
|
||||
|
||||
2. *Konfiguracijske datoteke (CMakeLists.txt)* CMake uporablja tekstovne datoteke z imenom `CMakeLists.txt`, ki vsebujejo navodila za konfiguracijo projekta. Te datoteke opisujejo, kako naj se projekt sestavi: kateri viri (source files) so vključeni, katere knjižnice so potrebne, in kakšne so odvisnosti med posameznimi komponentami.
|
||||
2. *Konfiguracijske datoteke (CMakeLists.txt):* CMake uporablja tekstovne datoteke z imenom `CMakeLists.txt`, ki vsebujejo navodila za konfiguracijo projekta. Te datoteke opisujejo, kako naj se projekt sestavi: kateri viri (source files) so vključeni, katere knjižnice so potrebne in kakšne so odvisnosti med posameznimi komponentami.
|
||||
|
||||
3. *Upravljanje odvisnosti* CMake omogoča enostavno upravljanje odvisnosti med knjižnicami in programi. Podpira iskanje in povezovanje z zunanjimi knjižnicami (npr. OpenCV, Boost) in omogoča definicijo lastnih ciljev (targets), kot so izvršljivi programi ali knjižnice.
|
||||
3. *Upravljanje odvisnosti:* CMake omogoča enostavno upravljanje odvisnosti med knjižnicami in programi. Podpira iskanje in povezovanje z zunanjimi knjižnicami (npr. OpenCV, Boost) in omogoča definicijo lastnih ciljev (targets), kot so izvršljivi programi ali knjižnice.
|
||||
|
||||
4. *Podpora za različne prevajalnike* CMake deluje z različnimi prevajalniki (npr. GCC, Clang, MSVC) in omogoča uporabo specifičnih nastavitev za vsakega od njih.
|
||||
4. *Podpora za različne prevajalnike:* CMake deluje z različnimi prevajalniki (npr. GCC, Clang, MSVC) in omogoča uporabo specifičnih nastavitev za vsakega od njih.
|
||||
|
||||
5. *Modularnost in ponovno uporabo kode* CMake podpira modularno strukturo projektov, kar olajša ponovno uporabo kode in deljenje knjižnic med različnimi projekti.
|
||||
5. *Modularnost in ponovna uporaba kode:* CMake podpira modularno strukturo projektov, kar olajša ponovno uporabo kode in deljenje knjižnic med različnimi projekti.
|
||||
|
||||
=== Kako CMake deluje?
|
||||
|
||||
@@ -335,8 +335,8 @@ ImGui je zaradi svoje preprostosti, učinkovitosti in fleksibilnosti priljubljen
|
||||
|
||||
=== Tipična uporaba CMake:
|
||||
|
||||
- *Razvoj programske opreme v C/C++:* CMake je standardno orodje za gradnjo projektov v C in C++, zlasti v večjih ali kompleksnih projektih.
|
||||
- *Večplatformski projekti:* Če razvijate programsko opremo, ki mora delovati na več platformah (Windows, Linux, macOS), je CMake idealno orodje za upravljanje gradnje.
|
||||
- *Razvoj programske opreme v C/C++:* CMake je standardno orodje za gradnjo projektov v C in C++ zlasti v večjih ali kompleksnih projektih.
|
||||
- *Večplatformski projekti:* Če razvijamo programsko opremo, ki mora delovati na več platformah (Windows, Linux, macOS), je CMake idealno orodje za upravljanje gradnje.
|
||||
- *Integracija z drugimi orodji:* CMake se lahko integrira z orodji za testiranje (npr. CTest), paketiranje (npr. CPack) in dokumentacijo.
|
||||
|
||||
|
||||
@@ -351,7 +351,7 @@ add_executable(moj_program main.cpp)
|
||||
```
|
||||
Ta datoteka določa, da je minimalna potrebna različica CMake 3.10, da je ime projekta "MojProjekt" in da naj se iz datoteke `main.cpp` generira izvršljivi program z imenom `moj_program`.
|
||||
|
||||
CMake je močno orodje, ki olajša in avtomatizira proces gradnje programske opreme, zlasti v večplatformskih okoljih. Njegova glavna prednost je fleksibilnost in možnost generiranja gradbenih datotek za različne sisteme, kar ga naredi nezaobhodljivega pri razvoju v C in C++. Ali te zanima kakšen specifičen vidik CMake ali primer uporabe?
|
||||
CMake je močno orodje, ki olajša in avtomatizira proces gradnje programske opreme zlasti v večplatformskih okoljih. Njegova glavna prednost je fleksibilnost in možnost generiranja gradbenih datotek za različne sisteme, kar ga naredi nezaobhodljivega pri razvoju v C in C++.
|
||||
#pagebreak()
|
||||
|
||||
== SQLITE3
|
||||
@@ -767,7 +767,7 @@ Postopek izrisa ozadja je sestavljen iz 5 korakov
|
||||
[
|
||||
#figure(
|
||||
image("assets/draw_steps/steps_1_2.png", height: 100pt),
|
||||
caption: [Korak soce],
|
||||
caption: [Korak sonce],
|
||||
)<steps_sonce>
|
||||
],
|
||||
|
||||
@@ -1002,7 +1002,7 @@ Začnemo tako, da damo v list @prvi_drawArgs in ponavljamo naslednje postopke do
|
||||
[
|
||||
#figure(
|
||||
image("assets/vizualizacija_drevo/slika06.png", height: 200pt),
|
||||
caption: [Novi otriki],
|
||||
caption: [Novi otroki],
|
||||
)<viztree6>
|
||||
],
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user