init
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*.pdf
|
||||
18
.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||
// for the documentation about the tasks.json format
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "run",
|
||||
"type": "shell",
|
||||
"command": "typst",
|
||||
"args": ["c", "diploma_nikola_petrov.typ"],
|
||||
"options": {"cwd": "${workspaceFolder}"},
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
},
|
||||
}
|
||||
]
|
||||
}
|
||||
106
90_slike_generacij.typ
Normal file
@@ -0,0 +1,106 @@
|
||||
#show figure.where(kind: image): set figure(supplement: [Slika])
|
||||
|
||||
#figure(
|
||||
image("slike/full_generation/1761153347_0.png"),
|
||||
caption: [
|
||||
Generacija 0
|
||||
]
|
||||
)
|
||||
#pagebreak()
|
||||
|
||||
#figure(
|
||||
image("slike/full_generation/1761153347_1.png"),
|
||||
caption: [
|
||||
Generacija 1
|
||||
]
|
||||
)
|
||||
#pagebreak()
|
||||
|
||||
#figure(
|
||||
image("slike/full_generation/1761153347_2.png"),
|
||||
caption: [
|
||||
Generacija 2
|
||||
]
|
||||
)
|
||||
#pagebreak()
|
||||
|
||||
#figure(
|
||||
image("slike/full_generation/1761153347_3.png"),
|
||||
caption: [
|
||||
Generacija 3
|
||||
]
|
||||
)
|
||||
#pagebreak()
|
||||
|
||||
#figure(
|
||||
image("slike/full_generation/1761153347_4.png"),
|
||||
caption: [
|
||||
Generacija 4
|
||||
]
|
||||
)
|
||||
#pagebreak()
|
||||
|
||||
#figure(
|
||||
image("slike/full_generation/1761153347_5.png"),
|
||||
caption: [
|
||||
Generacija 5
|
||||
]
|
||||
)
|
||||
#pagebreak()
|
||||
|
||||
#figure(
|
||||
image("slike/full_generation/1761153347_6.png"),
|
||||
caption: [
|
||||
Generacija 6
|
||||
]
|
||||
)
|
||||
#pagebreak()
|
||||
|
||||
#figure(
|
||||
image("slike/full_generation/1761153347_7.png"),
|
||||
caption: [
|
||||
Generacija 7
|
||||
]
|
||||
)
|
||||
#pagebreak()
|
||||
|
||||
#figure(
|
||||
image("slike/full_generation/1761153347_8.png"),
|
||||
caption: [
|
||||
Generacija 8
|
||||
]
|
||||
)
|
||||
#pagebreak()
|
||||
|
||||
#figure(
|
||||
image("slike/full_generation/1761153347_9.png"),
|
||||
caption: [
|
||||
Generacija 9
|
||||
]
|
||||
)
|
||||
#pagebreak()
|
||||
|
||||
#figure(
|
||||
image("slike/full_generation/1761153347_10.png"),
|
||||
caption: [
|
||||
Generacija 10
|
||||
]
|
||||
)
|
||||
#pagebreak()
|
||||
|
||||
#figure(
|
||||
image("slike/full_generation/1761153347_11.png"),
|
||||
caption: [
|
||||
Generacija 11
|
||||
]
|
||||
)
|
||||
#pagebreak()
|
||||
|
||||
#figure(
|
||||
image("slike/full_generation/1761153347_12.png"),
|
||||
caption: [
|
||||
Generacija 12
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
266
AIPrompts/duck.ai_2025-08-26_18-18-23.md
Normal file
@@ -0,0 +1,266 @@
|
||||
This conversation was generated with Duck.ai (https://duck.ai) using OpenAI's GPT-4o mini Model. AI chats may display inaccurate or offensive information (see https://duckduckgo.com/duckai/privacy-terms for more info).
|
||||
|
||||
====================
|
||||
|
||||
User prompt 1 of 2 - 26/08/2025, 6:09:24 pm:
|
||||
Math used for UI rotation of the image is based around simple Trigonometry.
|
||||
In the first part when the mouse is pressed we get the distance from mouse to image corner (cyan line image 1)
|
||||
In second part we get desired angle from mouse horizontal location (image 2)
|
||||
In third part we use the angle to calculate the new position of the image corner (image 1)
|
||||
In forth part when mouse is released we reset image position
|
||||
|
||||
|
||||
=== First step when mouse pressed
|
||||
We need to calculate the distance from mouse and image corner.
|
||||
$$
|
||||
\begin{align}
|
||||
mouseStart &= mouseV\\
|
||||
sizeOfVectorMI &= \sqrt{(mouseV_x - imageV_x)² + (mouseV_y - imageV_y)²}\\
|
||||
oldAngleOfVectorMI &= atan2(imageV_x - mouseV_x, imageV_y - mouseV_y)\\
|
||||
\end{align}
|
||||
$$
|
||||
sizeOfVectorMI is the (cyan line image1)
|
||||
And we need to remember the starting position (green point / orange line image 1)
|
||||
|
||||
|
||||
=== Second step while mouse is pressed
|
||||
First we need to calculate rotation of the image based on horizontal distance of the mouse position from the start point.
|
||||
We get this by
|
||||
$$
|
||||
\begin{align}
|
||||
dist &= mouseV_x - mouseStart_x \\
|
||||
l &= \frac{dist}{screenWidth}\\
|
||||
rotation &= lerp(45,-45, \frac{l + 1}{2})\\
|
||||
newAngleOfVectorMI &= (\frac{rotation * \pi}{180}) + oldAngleOfVectorMI\\
|
||||
\end{align}
|
||||
$$
|
||||
Can now get vector from the mouse to the corner of the image
|
||||
|
||||
$$
|
||||
\begin{align}
|
||||
vectorMI_x &= sizeOfVecorMI * cos(newAngleOfVectorMI)\\
|
||||
vectorMI_y &= sizeOfVecorMI * sin(newAngleOfVectorMI)\\
|
||||
\end{align}
|
||||
$$
|
||||
From the vector we can get corner of the image and rotation of the image
|
||||
$$
|
||||
\begin{align}
|
||||
imageV_x &= vectorMI_x + mouseV_x\\
|
||||
imageV_y &= vectorMI_y + mouseV_y\\
|
||||
imageRotation &= 90 + rotation\\
|
||||
\end{align}
|
||||
$$
|
||||
|
||||
With position of the corner we can draw the image from the corner with angle imageRotation
|
||||
|
||||
=== Third step when mouse is released
|
||||
We reset values
|
||||
$$
|
||||
\begin{align}
|
||||
imageRotation &= 90 \\
|
||||
imageV &= orgImageV\\
|
||||
\end{align}
|
||||
$$
|
||||
|
||||
|
||||
REFERENCE
|
||||
|
||||
https://en.wikipedia.org/wiki/Atan2#Definition_and_computation
|
||||
$$
|
||||
|
||||
angle = atan2(y, x) =
|
||||
\begin{cases}
|
||||
\arctan(\frac{y}{x}) & \text{if } x > 0 \\
|
||||
\arctan(\frac{y}{x}) + \pi & \text{if } y \geq 0 \text{ and } x < 0 \\
|
||||
\arctan(\frac{y}{x}) - \pi & \text{if } y < 0 \text{ and } x < 0 \\
|
||||
\frac{\pi}{2} & \text{if } x = 0 \text{ and } y > 0 \\
|
||||
-\frac{\pi}{2} & \text{if } x = 0 \text{ and } y < 0 \\
|
||||
\text{undefined} & \text{if } x = 0 \text{ and } y = 0
|
||||
\end{cases}
|
||||
|
||||
$$
|
||||
|
||||
|
||||
![[cordinats_show_mouse_picture.jpg|200]]
|
||||
|
||||
![[show_mouse_movement.jpg |200]]
|
||||
|
||||
|
||||
```cpp
|
||||
float Vector2Distance(Vector2 v1, Vector2 v2)
|
||||
{
|
||||
float result = sqrtf((v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y));
|
||||
return result;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
```cpp
|
||||
Vector2 mouseV = GetMousePosition();
|
||||
if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT))
|
||||
{
|
||||
mouseStart = mouseV;
|
||||
sizeOfVectorMI = Vector2Distance(mouseStart, newPosition);
|
||||
oldAngleOfVectorMI = std::atan2(newPosition.x - mouseStart.x, newPosition.y - mouseStart.y);
|
||||
}
|
||||
|
||||
if (IsMouseButtonDown(MOUSE_BUTTON_LEFT))
|
||||
{
|
||||
|
||||
float dist = mouseV.x - mouseStart.x;
|
||||
float l = dist / screenWidth;
|
||||
rotation = Lerp(45.0f, -45.0f, (l + 1) / 2);
|
||||
float newAngleOfVectorMI = ((rotation*PI) / 180.0f) + oldAngleOfVectorMI;
|
||||
|
||||
Vector2 vectorMI = {
|
||||
.x = sizeOfVectorMI * std::sin(newAngleOfVectorMI),
|
||||
.y = sizeOfVectorMI * std::cos(newAngleOfVectorMI)
|
||||
};
|
||||
|
||||
imageV.x = vectorMI.x + mouseV.x;
|
||||
imageV.y = vectorMI.y + mouseV.y;
|
||||
}
|
||||
|
||||
if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT))
|
||||
{
|
||||
rotation = 0.0f;
|
||||
newPosition = orgPosition;
|
||||
}
|
||||
```
|
||||
can you format and rewrite to unify it.
|
||||
|
||||
directy output the finished text dont respond with enything else
|
||||
|
||||
GPT-4o mini:
|
||||
== UI Image Rotation Using Trigonometry
|
||||
|
||||
The process of rotating an image based on mouse movement involves several steps, utilizing basic trigonometric principles. Below is a unified and formatted explanation of the steps involved.
|
||||
|
||||
=== Step 1: Mouse Pressed
|
||||
|
||||
When the mouse is pressed, we calculate the distance from the mouse to the image corner.
|
||||
|
||||
$$
|
||||
\begin{align}
|
||||
mouseStart &= mouseV\\
|
||||
sizeOfVectorMI &= \sqrt{(mouseV_x - imageV_x)² + (mouseV_y - imageV_y)²}\\
|
||||
oldAngleOfVectorMI &= \text{atan2}(imageV_x - mouseV_x, imageV_y - mouseV_y)\\
|
||||
\end{align}
|
||||
$$
|
||||
|
||||
- *sizeOfVectorMI* represents the distance (cyan line in image 1).
|
||||
- We also store the starting position (green point/orange line in image 1).
|
||||
|
||||
=== Step 2: While Mouse is Pressed
|
||||
|
||||
Next, we calculate the rotation of the image based on the horizontal distance of the mouse position from the starting point.
|
||||
|
||||
$$
|
||||
\begin{align}
|
||||
dist &= mouseV_x - mouseStart_x \\
|
||||
l &= \frac{dist}{screenWidth}\\
|
||||
rotation &= \text{lerp}(45, -45, \frac{l + 1}{2})\\
|
||||
newAngleOfVectorMI &= \left(\frac{rotation \cdot \pi}{180}\right) + oldAngleOfVectorMI\\
|
||||
\end{align}
|
||||
$$
|
||||
|
||||
Now, we can derive the vector from the mouse to the corner of the image:
|
||||
|
||||
$$
|
||||
\begin{align}
|
||||
vectorMI_x &= sizeOfVectorMI \cdot \cos(newAngleOfVectorMI)\\
|
||||
vectorMI_y &= sizeOfVectorMI \cdot \sin(newAngleOfVectorMI)\\
|
||||
\end{align}
|
||||
$$
|
||||
|
||||
Using this vector, we can determine the new position of the image corner and its rotation:
|
||||
|
||||
$$
|
||||
\begin{align}
|
||||
imageV_x &= vectorMI_x + mouseV_x\\
|
||||
imageV_y &= vectorMI_y + mouseV_y\\
|
||||
imageRotation &= 90 + rotation\\
|
||||
\end{align}
|
||||
$$
|
||||
|
||||
With the position of the corner established, we can draw the image from this corner at the angle *imageRotation*.
|
||||
|
||||
=== Step 3: Mouse Released
|
||||
|
||||
Upon releasing the mouse, we reset the values:
|
||||
|
||||
$$
|
||||
\begin{align}
|
||||
imageRotation &= 90 \\
|
||||
imageV &= orgImageV\\
|
||||
\end{align}
|
||||
$$
|
||||
|
||||
=== Reference for atan2 Function
|
||||
|
||||
The *atan2* function is defined as follows:
|
||||
|
||||
$$
|
||||
\text{angle} = \text{atan2}(y, x) =
|
||||
\begin{cases}
|
||||
\arctan\left(\frac{y}{x}\right) & \text{if } x > 0 \\
|
||||
\arctan\left(\frac{y}{x}\right) + \pi & \text{if } y \geq 0 \text{ and } x < 0 \\
|
||||
\arctan\left(\frac{y}{x}\right) - \pi & \text{if } y < 0 \text{ and } x < 0 \\
|
||||
\frac{\pi}{2} & \text{if } x = 0 \text{ and } y > 0 \\
|
||||
-\frac{\pi}{2} & \text{if } x = 0 \text{ and } y < 0 \\
|
||||
\text{undefined} & \text{if } x = 0 \text{ and } y = 0
|
||||
\end{cases}
|
||||
$$
|
||||
|
||||
=== C++ Implementation
|
||||
|
||||
```cpp
|
||||
float Vector2Distance(Vector2 v1, Vector2 v2)
|
||||
{
|
||||
float result = sqrtf((v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y));
|
||||
return result;
|
||||
}
|
||||
|
||||
Vector2 mouseV = GetMousePosition();
|
||||
if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT))
|
||||
{
|
||||
mouseStart = mouseV;
|
||||
sizeOfVectorMI = Vector2Distance(mouseStart, newPosition);
|
||||
oldAngleOfVectorMI = std::atan2(newPosition.x - mouseStart.x, newPosition.y - mouseStart.y);
|
||||
}
|
||||
|
||||
if (IsMouseButtonDown(MOUSE_BUTTON_LEFT))
|
||||
{
|
||||
float dist = mouseV.x - mouseStart.x;
|
||||
float l = dist / screenWidth;
|
||||
rotation = Lerp(45.0f, -45.0f, (l + 1) / 2);
|
||||
float newAngleOfVectorMI = ((rotation * PI) / 180.0f) + oldAngleOfVectorMI;
|
||||
|
||||
Vector2 vectorMI = {
|
||||
.x = sizeOfVectorMI * std::sin(newAngleOfVectorMI),
|
||||
.
|
||||
|
||||
--------------------
|
||||
|
||||
User prompt 2 of 2 - 26/08/2025, 6:17:49 pm:
|
||||
continue
|
||||
|
||||
GPT-4o mini:
|
||||
```cpp
|
||||
.y = sizeOfVectorMI * std::cos(newAngleOfVectorMI)
|
||||
};
|
||||
|
||||
imageV.x = vectorMI.x + mouseV.x;
|
||||
imageV.y = vectorMI.y + mouseV.y;
|
||||
}
|
||||
|
||||
if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT))
|
||||
{
|
||||
rotation = 0.0f;
|
||||
newPosition = orgPosition;
|
||||
}
|
||||
```
|
||||
|
||||
This C++ code snippet implements the logic for rotating an image based on mouse movements. It calculates the distance and angle between the mouse position and the image corner, updates the image's position and rotation while the mouse is pressed, and resets the values when the mouse is released.
|
||||
|
||||
By following these steps, you can achieve a smooth and intuitive image rotation effect in your UI.
|
||||
33
ales_notes.md
Normal file
@@ -0,0 +1,33 @@
|
||||
Zdravo Nikola!
|
||||
|
||||
Ok. Še vedno imam težavo videti, zakaj bi uporabnik vstavljal toliko vnosov, da bi na koncu dobil drevo. Če bi bil postopek relativno hiter, bi bilo enostavneje...
|
||||
|
||||
Koliko potez pa je potrebnih, da si naredi uporabnik končno drevo? In kako to drevo izgleda?
|
||||
|
||||
In kakšne raznolikosti izgledov dreves je s tem postopkom mogoče doseči (koliko različnim okusom se aplikacija prilagodi)? Verjamem, da pokriva precej veliko različnih rešitev, a to je treba tudi malo grafično demonstrirati...
|
||||
|
||||
Zakaj si aplikacijo zasnoval tako kot si jo in zakaj nisi omogočil večje raznolikosti osnovnih grafičnih gradnikov (ozadje, barvna paleta...) in se s tem bolj približal različnim okusom uporabnika? Že izbira barv (tako ozadja kot drevesa) je precej drzna in zelo verjetno ne bo všeč nezanemarljivo velikemu deležu uporabnikov... Zakaj ne začneš najprej z izbiro barv drevesa in z ozadjem? Sedaj to uporabniku vsiliš, potem pa pričakuješ, da bo verodostojno izbiral, katero izmed dreves mu je najbolj všeč... Kaj če mu ni všeč čisto nič?
|
||||
|
||||
In zakaj 12 generacij? Je to res optimalno število? Kako smo prišli do tega števila? Enako vprašanje za 16 primerkov na generacijo... Na začetku bi lahko bilo število primerkov manjše, raznolikost med njimi pa večja, nato pa bi lahko šel v podrobnosti... Na ta način bi lahko tvojo aplikacijo prikazal kot učinkovit način preverjanja okusa oz. odločitve uporabnika, v primerih, ko uporabnik niti ne zna na prvo žogo opisati, kaj mu je všeč... Vsebinsko sem pričakoval večji poudarek na tem delu naloge...
|
||||
|
||||
V nalogi je res veliko slovničnih napak. s/z je precej napačno uporabljen, namesto decimalnih pik moraš povsod uporabiti decimalno vejico. Stavki so večkrat nerodno zapisani. Namesto o nizki odzivnosti, ki bi jo lahko tudi ovrednotil v ms, govoriš o zaostajanju aplikacije... Nisem prepričan, da bo lektor/lektorica znal/a poloviti vse te napake... Si sploh vklopil orodja za preverjanje črkovanja in gramatike? Ni ravno videti... Niti pik za zaključek stavka nisi pravilno postavil oz. jih večkrat povsem ignoriraš? Posledično je večkrat skoraj nemogoče (definitivno pa zelo zamudno), razbrati, kaj si želel povedati...
|
||||
|
||||
Trditev "Da smo lahko prikazali koliko so uporabniku slike všeč. Smo se odločili, da bomo izračunali podobnost med slikami, bolj ko so si slike podobne bolj so všeč uporabniku in obratno." se mi zdi napačna... Rzdalje med slikami povedo podobnost slik, torej kam je izbira skonvergirala. Nič pa ni rečeno, da so slike uporabniku dejansko všeč.
|
||||
|
||||
Tudi ne razumem najbolje, zakaj je bilo treba tu testirati 7 rešitev razdalj...
|
||||
|
||||
Na slikah ti manjkajo oznake osi...
|
||||
|
||||
V tabelah imaš večkrat angleški izraze. Bo kar treba posloveniti...
|
||||
|
||||
"Testiranje je potekalo na večjih primerih evolucije." Misliš tu res na večje primere ali na več primerov? Koliko primerov? Kdo je testiral?
|
||||
|
||||
In polno je nesmiselnih stavkov: "In med razhroscevanjem smo opazili da queued in showed delujeta kot premikajoči indeksi za queued" Kako lahko queued deluje kot indeks za samega sebe?
|
||||
|
||||
In večkrat greš v nepotrebne podrobnosti... Na primer, definiraš funkcijo atan2, in to napačno (stavka "Funkcija atan2 je matematična funkcija, ki se uporablja za izračun tangente loka količnika" ne razumem). atan2 je znana funkcija... Dovolj je, da se sklicuješ na literaturo, ki jo opisuje...
|
||||
|
||||
Tudi postopek risanja ozadja je precej podrobno opisan, hkrati pa je ozadje barvno in motivsko precej omejeno...
|
||||
|
||||
In še vedno imam občutek, da bi se dalo metrike razdalj bolj smelo uporabiti... Morda bi lahko z njimi testiral hitrost konvergence k končni rešitvi in nadzoroval naključnost tvorjenja dreves. V bistvu ne razumem, kako se naključnost spremija preko genaracij, zako za križanje, kot za mutacije... Sem skušal to razbrati iz poglavja 4.2, pa mi ne uspe...
|
||||
|
||||
Skratka, globalne stvari, ki bi morale biti razložene bolj jasno, niso, podrobnosti, ki bi bile lahko tudi manj jasno razložene, pa so večkrat precej razbohotene in dodatno zameglijo globalno sliko...
|
||||
BIN
assets/UM_FERI.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
assets/capture_show_noraml.jpg
Executable file
|
After Width: | Height: | Size: 168 KiB |
BIN
assets/cordinats_show_mouse_picture.jpg
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
assets/draw_steps/steps_1_1.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
assets/draw_steps/steps_1_10.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
assets/draw_steps/steps_1_11.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
assets/draw_steps/steps_1_12.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
assets/draw_steps/steps_1_13.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
assets/draw_steps/steps_1_2.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
assets/draw_steps/steps_1_3.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/draw_steps/steps_1_3_1.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
assets/draw_steps/steps_1_3_2.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
assets/draw_steps/steps_1_4.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/draw_steps/steps_1_5.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/draw_steps/steps_1_6.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
assets/draw_steps/steps_1_7.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
assets/draw_steps/steps_1_8.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
assets/draw_steps/steps_1_9.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
assets/draw_steps/steps_2_1.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
assets/draw_steps/steps_2_2.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
assets/full_generation/1761153347_0.png
Normal file
|
After Width: | Height: | Size: 3.4 MiB |
BIN
assets/full_generation/1761153347_1.png
Normal file
|
After Width: | Height: | Size: 3.9 MiB |
BIN
assets/full_generation/1761153347_10.png
Normal file
|
After Width: | Height: | Size: 4.2 MiB |
BIN
assets/full_generation/1761153347_11.png
Normal file
|
After Width: | Height: | Size: 4.6 MiB |
BIN
assets/full_generation/1761153347_12.png
Normal file
|
After Width: | Height: | Size: 4.7 MiB |
BIN
assets/full_generation/1761153347_2.png
Normal file
|
After Width: | Height: | Size: 4.2 MiB |
BIN
assets/full_generation/1761153347_3.png
Normal file
|
After Width: | Height: | Size: 4.1 MiB |
BIN
assets/full_generation/1761153347_4.png
Normal file
|
After Width: | Height: | Size: 4.2 MiB |
BIN
assets/full_generation/1761153347_5.png
Normal file
|
After Width: | Height: | Size: 4.7 MiB |
BIN
assets/full_generation/1761153347_6.png
Normal file
|
After Width: | Height: | Size: 4.6 MiB |
BIN
assets/full_generation/1761153347_7.png
Normal file
|
After Width: | Height: | Size: 4.6 MiB |
BIN
assets/full_generation/1761153347_8.png
Normal file
|
After Width: | Height: | Size: 4.9 MiB |
BIN
assets/full_generation/1761153347_9.png
Normal file
|
After Width: | Height: | Size: 4.2 MiB |
BIN
assets/google-play-console/google-play-console-01.png
Normal file
|
After Width: | Height: | Size: 123 KiB |
BIN
assets/google-play-console/google-play-console-02.png
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
assets/google-play-console/google-play-console-03.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
assets/google-play-console/google-play-console-04.png
Normal file
|
After Width: | Height: | Size: 101 KiB |
BIN
assets/google-play-console/google-play-console-05.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
assets/google-play-console/google-play-console-06.png
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
assets/google-play-console/google-play-console-07.png
Normal file
|
After Width: | Height: | Size: 113 KiB |
BIN
assets/google-play-console/google-play-console-08.png
Normal file
|
After Width: | Height: | Size: 127 KiB |
BIN
assets/google-play-console/google-play-console-09.png
Normal file
|
After Width: | Height: | Size: 146 KiB |
BIN
assets/google-play-console/google-play-console-10.png
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
assets/google-play-console/google-play-console-11.png
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
assets/google-play-console/google-play-console-12.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
assets/google-play-console/google-play-console-13.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
24
assets/potek_diagram/diagram.md
Normal file
@@ -0,0 +1,24 @@
|
||||
sequenceDiagram
|
||||
participant Uporabnik
|
||||
participant Aplikacija
|
||||
participant DnaManager
|
||||
participant DnaVizulizacija
|
||||
Aplikacija ->> DnaManager: next
|
||||
DnaManager ->> Aplikacija: nonNullDna
|
||||
Aplikacija ->> DnaVizulizacija: draw
|
||||
DnaVizulizacija ->> Aplikacija:
|
||||
Aplikacija ->> Uporabnik: Prikaz slike
|
||||
Uporabnik ->> Aplikacija: likes/dislikes
|
||||
Aplikacija ->> DnaManager: liked
|
||||
DnaManager ->> Aplikacija:
|
||||
Aplikacija ->> DnaManager: next
|
||||
DnaManager ->> Aplikacija: NullDna
|
||||
Aplikacija ->> DnaManager: newGen
|
||||
DnaManager ->> Aplikacija:
|
||||
Aplikacija ->> DnaManager: next
|
||||
DnaManager ->> Aplikacija: nonNullDna
|
||||
Aplikacija ->> DnaVizulizacija: draw
|
||||
DnaVizulizacija ->> Aplikacija:
|
||||
Aplikacija ->> Uporabnik: Prikaz slike
|
||||
Uporabnik ->> Aplikacija: likes/dislikes
|
||||
|
||||
67
assets/potek_diagram/diagram.svg
Normal file
|
After Width: | Height: | Size: 500 KiB |
BIN
assets/rand/Triangle_Strip.svg.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
assets/rand/capture_show_dislike.jpg
Executable file
|
After Width: | Height: | Size: 193 KiB |
BIN
assets/rand/capture_show_liked.jpg
Executable file
|
After Width: | Height: | Size: 174 KiB |
BIN
assets/rand/capture_show_noraml.jpg
Executable file
|
After Width: | Height: | Size: 168 KiB |
BIN
assets/rand/cordinats_show_mouse_picture.jpg
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
assets/rand/show_mouse_movement.jpg
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
assets/rand/slika_drevesa.jpg
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
assets/vizualizacija_drevo/slika00.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
assets/vizualizacija_drevo/slika01.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
assets/vizualizacija_drevo/slika02.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
assets/vizualizacija_drevo/slika03.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
assets/vizualizacija_drevo/slika04.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
assets/vizualizacija_drevo/slika05.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
assets/vizualizacija_drevo/slika06.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
assets/vizualizacija_drevo/slika07.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
assets/zgodovina_slike/001_first_ever.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
assets/zgodovina_slike/002_one_color_per_branch.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
assets/zgodovina_slike/003_blend_colors.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 66 KiB |
BIN
assets/zgodovina_slike/005_random_amount_of_branches.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
BIN
assets/zgodovina_slike/006_add_background.png
Normal file
|
After Width: | Height: | Size: 132 KiB |
BIN
assets/zgodovina_slike/007_simple_moon_and_mounten.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
assets/zgodovina_slike/008_nicer_mounten_with_layers.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
assets/zgodovina_slike/009_sun_has_rings.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 26 KiB |
BIN
assets/zgodovina_slike/011_beter_sun.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
assets/zgodovina_slike/012_better_mountens_with_perlin_noise.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
assets/zgodovina_slike/013_add_size_of_branch.png
Normal file
|
After Width: | Height: | Size: 160 KiB |
BIN
assets/zgodovina_slike/014_add_angle_to_branches.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
assets/zgodovina_slike/015_add_load_and_save_state_show_gen.png
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
assets/zgodovina_slike/016_final_result.png
Normal file
|
After Width: | Height: | Size: 96 KiB |
132
citations.bib
Normal file
@@ -0,0 +1,132 @@
|
||||
|
||||
@misc{wiki_triangle_strip,
|
||||
title = {Triangle strip - Wikipedia},
|
||||
url = {https://en.wikipedia.org/w/index.php?title=Triangle_strip&oldid=1306075568},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{wiki_atan2,
|
||||
title = {atan2 - Wikipedia},
|
||||
url = {https://en.wikipedia.org/w/index.php?title=Atan2&oldid=1319233508},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{web_raylib,
|
||||
title = {raylib | A simple and easy-to-use library to enjoy videogames programming},
|
||||
url = {https://www.raylib.com},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{web_raylib_cheatsheet,
|
||||
title = {raylib - cheatsheet},
|
||||
url = {https://www.raylib.com/cheatsheet/cheatsheet.html},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{git_imgui,
|
||||
title = {ocornut/imgui: Dear ImGui: Bloat-free Graphical User interface},
|
||||
url = {https://github.com/ocornut/imgui},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{git_rlImgui,
|
||||
title = {raylib-extras/rlImGui: A Raylib integration with DearImGui},
|
||||
url = {https://github.com/raylib-extras/rlImGui},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{web_sqlite,
|
||||
title = {SQLite Home Page},
|
||||
url = {https://www.sqlite.org/},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{wiki_euclidean_distance,
|
||||
title = {Euclidean distance - Wikipedia},
|
||||
url = {https://en.wikipedia.org/w/index.php?title=Euclidean_distance&oldid=1310276619},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{wiki_dot_product,
|
||||
title = {Dot product - Wikipedia},
|
||||
url = {https://en.wikipedia.org/w/index.php?title=Dot_product&oldid=1315602182},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{wiki_cosine_similarity,
|
||||
title = {Cosine similarity - Wikipedia},
|
||||
url = {https://en.wikipedia.org/wiki/Cosine_similarity&oldid=1311865269},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{wiki_hamming_distance,
|
||||
title = {Hamming distance - Wikipedia},
|
||||
url = {https://en.wikipedia.org/w/index.php?title=Hamming_distance&oldid=1320319980},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{wiki_jaccard_index,
|
||||
title = {Jaccard index - Wikipedia},
|
||||
url = {https://en.wikipedia.org/w/index.php?title=Jaccard_index&oldid=1311865137},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{wiki_levenshtein_distance,
|
||||
title = {Levenshtein distance - Wikipedia},
|
||||
url = {https://en.wikipedia.org/w/index.php?title=Levenshtein_distance&oldid=1320167755},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{wiki_needlemanwunsch_algorithm,
|
||||
title = {Needleman-Wunsch algorithm - Wikipedia},
|
||||
url = {https://en.wikipedia.org/w/index.php?title=Needleman%E2%80%93Wunsch_algorithm&oldid=1320393202},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{web_google_play_console,
|
||||
title = {Get started with Play Console - Play Console Help},
|
||||
url = {https://support.google.com/googleplay/android-developer/answer/6112435?hl=en#zippy=},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{web_google_treender,
|
||||
title = {Treender - Apps on Google Play},
|
||||
url = {https://play.google.com/store/apps/details?id=com.petrovv.treender&hl=en_US},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{wiki_cpp,
|
||||
title = {C++ - Wikipedia},
|
||||
url = {https://en.wikipedia.org/w/index.php?title=C%2B%2B&oldid=1318543168},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{wiki_cmake,
|
||||
title = {CMake - Wikipedia},
|
||||
url = {https://en.wikipedia.org/w/index.php?title=CMake&oldid=1319769879},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{web_cmake,
|
||||
title = {CMake - Upgrade Your Software Build System},
|
||||
url = {https://cmake.org/},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{wiki_sqlite,
|
||||
title = {SQLite - Wikipedia},
|
||||
url = {https://en.wikipedia.org/w/index.php?title=SQLite&oldid=1320409898},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{wiki_lerp,
|
||||
title = {Linear interpolation - Wikipedia},
|
||||
url = {https://en.wikipedia.org/w/index.php?title=Linear_interpolation&oldid=1316894131},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
|
||||
@misc{git_nob,
|
||||
title = {tsoding/nob.h: Header only library for writing build recipes in C.},
|
||||
url = {https://github.com/tsoding/nob.h},
|
||||
urldate = {2025-11-05},
|
||||
}
|
||||
1538
diploma_nikola_petrov.typ
Normal file
499
ieee.csl
Normal file
@@ -0,0 +1,499 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only">
|
||||
<info>
|
||||
<title>IEEE</title>
|
||||
<id>http://www.zotero.org/styles/ieee</id>
|
||||
<link href="http://www.zotero.org/styles/ieee" rel="self"/>
|
||||
<!-- <link href="https://ieeeauthorcenter.ieee.org/wp-content/uploads/IEEE-Reference-Guide.pdf" rel="documentation"/> - 2018 guidelines -->
|
||||
<link href="http://journals.ieeeauthorcenter.ieee.org/wp-content/uploads/sites/7/IEEE_Reference_Guide.pdf" rel="documentation"/>
|
||||
<link href="https://journals.ieeeauthorcenter.ieee.org/your-role-in-article-production/ieee-editorial-style-manual/" rel="documentation"/>
|
||||
<author>
|
||||
<name>Michael Berkowitz</name>
|
||||
<email>mberkowi@gmu.edu</email>
|
||||
</author>
|
||||
<contributor>
|
||||
<name>Julian Onions</name>
|
||||
<email>julian.onions@gmail.com</email>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Rintze Zelle</name>
|
||||
<uri>http://twitter.com/rintzezelle</uri>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Stephen Frank</name>
|
||||
<uri>http://www.zotero.org/sfrank</uri>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Sebastian Karcher</name>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Giuseppe Silano</name>
|
||||
<email>g.silano89@gmail.com</email>
|
||||
<uri>http://giuseppesilano.net</uri>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Patrick O'Brien</name>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Brenton M. Wiernik</name>
|
||||
</contributor>
|
||||
<contributor>
|
||||
<name>Oliver Couch</name>
|
||||
<email>oliver.couch@gmail.com</email>
|
||||
</contributor>
|
||||
<category citation-format="numeric"/>
|
||||
<category field="engineering"/>
|
||||
<category field="generic-base"/>
|
||||
<summary>IEEE style as per the 2023 guidelines, V 11.29.2023.</summary>
|
||||
<updated>2024-03-27T11:41:27+00:00</updated>
|
||||
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
|
||||
</info>
|
||||
<locale xml:lang="en">
|
||||
<date form="text">
|
||||
<date-part name="month" form="short" suffix=" "/>
|
||||
<date-part name="day" form="numeric-leading-zeros" suffix=", "/>
|
||||
<date-part name="year"/>
|
||||
</date>
|
||||
<terms>
|
||||
<term name="chapter" form="short">ch.</term>
|
||||
<term name="chapter-number" form="short">ch.</term>
|
||||
<term name="presented at">presented at the</term>
|
||||
<term name="available at">available</term>
|
||||
</terms>
|
||||
</locale>
|
||||
<!-- Macros -->
|
||||
<macro name="status">
|
||||
<choose>
|
||||
<if variable="page issue volume" match="none">
|
||||
<text variable="status" text-case="capitalize-first" suffix="" font-weight="bold"/>
|
||||
</if>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="edition">
|
||||
<choose>
|
||||
<if type="bill book chapter graphic legal_case legislation motion_picture paper-conference report song" match="any">
|
||||
<choose>
|
||||
<if is-numeric="edition">
|
||||
<group delimiter=" ">
|
||||
<number variable="edition" form="ordinal"/>
|
||||
<text term="edition" form="short"/>
|
||||
</group>
|
||||
</if>
|
||||
<else>
|
||||
<text variable="edition" text-case="capitalize-first" suffix="."/>
|
||||
</else>
|
||||
</choose>
|
||||
</if>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="issued">
|
||||
<choose>
|
||||
<if type="article-journal report" match="any">
|
||||
<date variable="issued">
|
||||
<date-part name="month" form="short" suffix=" "/>
|
||||
<date-part name="year" form="long"/>
|
||||
</date>
|
||||
</if>
|
||||
<else-if type="bill book chapter graphic legal_case legislation song thesis" match="any">
|
||||
<date variable="issued">
|
||||
<date-part name="year" form="long"/>
|
||||
</date>
|
||||
</else-if>
|
||||
<else-if type="paper-conference" match="any">
|
||||
<date variable="issued">
|
||||
<date-part name="month" form="short"/>
|
||||
<date-part name="year" prefix=" "/>
|
||||
</date>
|
||||
</else-if>
|
||||
<else-if type="motion_picture" match="any">
|
||||
<date variable="issued" form="text" prefix="(" suffix=")"/>
|
||||
</else-if>
|
||||
<else>
|
||||
<date variable="issued" form="text"/>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="author">
|
||||
<names variable="author">
|
||||
<name and="text" et-al-min="7" et-al-use-first="1" initialize-with=". "/>
|
||||
<label form="short" prefix=", " text-case="capitalize-first"/>
|
||||
<et-al font-style="italic"/>
|
||||
<substitute>
|
||||
<names variable="editor"/>
|
||||
<names variable="translator"/>
|
||||
<text macro="director"/>
|
||||
</substitute>
|
||||
</names>
|
||||
</macro>
|
||||
<macro name="editor">
|
||||
<names variable="editor">
|
||||
<name initialize-with=". " delimiter=", " and="text"/>
|
||||
<label form="short" prefix=", " text-case="capitalize-first"/>
|
||||
</names>
|
||||
</macro>
|
||||
<macro name="director">
|
||||
<names variable="director">
|
||||
<name and="text" et-al-min="7" et-al-use-first="1" initialize-with=". "/>
|
||||
<et-al font-style="italic"/>
|
||||
</names>
|
||||
</macro>
|
||||
<macro name="locators">
|
||||
<group delimiter=", ">
|
||||
<text macro="edition"/>
|
||||
<group delimiter=" ">
|
||||
<text term="volume" form="short"/>
|
||||
<number variable="volume" form="numeric"/>
|
||||
</group>
|
||||
<group delimiter=" ">
|
||||
<number variable="number-of-volumes" form="numeric"/>
|
||||
<text term="volume" form="short" plural="true"/>
|
||||
</group>
|
||||
<group delimiter=" ">
|
||||
<text term="issue" form="short"/>
|
||||
<number variable="issue" form="numeric"/>
|
||||
</group>
|
||||
</group>
|
||||
</macro>
|
||||
<macro name="title">
|
||||
<choose>
|
||||
<if type="bill book graphic legal_case legislation motion_picture song standard software" match="any">
|
||||
<text variable="title" font-style="italic"/>
|
||||
</if>
|
||||
<else>
|
||||
<text variable="title" quotes="true"/>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="publisher">
|
||||
<choose>
|
||||
<if type="bill book chapter graphic legal_case legislation motion_picture paper-conference song" match="any">
|
||||
<group delimiter=": ">
|
||||
<text variable="publisher-place"/>
|
||||
<text variable="publisher"/>
|
||||
</group>
|
||||
</if>
|
||||
<else>
|
||||
<group delimiter=", ">
|
||||
<text variable="publisher"/>
|
||||
<text variable="publisher-place"/>
|
||||
</group>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="event">
|
||||
<choose>
|
||||
<!-- Published Conference Paper -->
|
||||
<if type="paper-conference speech" match="any">
|
||||
<choose>
|
||||
<if variable="container-title" match="any">
|
||||
<group delimiter=" ">
|
||||
<text term="in"/>
|
||||
<text variable="container-title" font-style="italic"/>
|
||||
</group>
|
||||
</if>
|
||||
<!-- Unpublished Conference Paper -->
|
||||
<else>
|
||||
<group delimiter=" ">
|
||||
<text term="presented at"/>
|
||||
<text variable="event"/>
|
||||
</group>
|
||||
</else>
|
||||
</choose>
|
||||
</if>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="access">
|
||||
<choose>
|
||||
<if type="webpage post-weblog post" match="any">
|
||||
<group delimiter=" " prefix=" ">
|
||||
<text value="Dostopno na: " suffix=" "/>
|
||||
<text variable="URL" suffix=" "/>
|
||||
<group prefix="[" suffix="]">
|
||||
<date variable="accessed" form="text"/>
|
||||
</group>
|
||||
</group>
|
||||
</if>
|
||||
<else-if match="any" variable="DOI">
|
||||
<text variable="DOI" prefix=" doi: " suffix="."/>
|
||||
</else-if>
|
||||
<else-if variable="URL">
|
||||
<group delimiter=". " prefix=" " suffix=". ">
|
||||
<group delimiter=": ">
|
||||
<text term="accessed" text-case="capitalize-first"/>
|
||||
<date variable="accessed" form="text"/>
|
||||
</group>
|
||||
<group prefix="[" suffix="]" delimiter=" ">
|
||||
<choose>
|
||||
<if variable="medium" match="any">
|
||||
<text variable="medium" text-case="capitalize-first"/>
|
||||
</if>
|
||||
<else>
|
||||
<text term="online" text-case="capitalize-first"/>
|
||||
<choose>
|
||||
<if type="motion_picture">
|
||||
<text term="video" text-case="capitalize-first"/>
|
||||
</if>
|
||||
</choose>
|
||||
</else>
|
||||
</choose>
|
||||
</group>
|
||||
</group>
|
||||
<group delimiter=": " prefix=" ">
|
||||
<text term="available at" text-case="capitalize-first"/>
|
||||
<text variable="URL"/>
|
||||
</group>
|
||||
</else-if>
|
||||
</choose>
|
||||
</macro>
|
||||
|
||||
<macro name="page">
|
||||
<choose>
|
||||
<if type="article-journal" variable="number" match="all">
|
||||
<group delimiter=" ">
|
||||
<text value="Art."/>
|
||||
<text term="issue" form="short"/>
|
||||
<text variable="number"/>
|
||||
</group>
|
||||
</if>
|
||||
<else>
|
||||
<group delimiter=" ">
|
||||
<label variable="page" form="short"/>
|
||||
<text variable="page"/>
|
||||
</group>
|
||||
</else>
|
||||
</choose>
|
||||
</macro>
|
||||
<macro name="citation-locator">
|
||||
<group delimiter=" ">
|
||||
<choose>
|
||||
<if locator="page">
|
||||
<label variable="locator" form="short"/>
|
||||
</if>
|
||||
<else>
|
||||
<label variable="locator" form="short" text-case="capitalize-first"/>
|
||||
</else>
|
||||
</choose>
|
||||
<text variable="locator"/>
|
||||
</group>
|
||||
</macro>
|
||||
<macro name="geographic-location">
|
||||
<group delimiter=", " suffix=".">
|
||||
<choose>
|
||||
<if variable="publisher-place">
|
||||
<text variable="publisher-place" text-case="title"/>
|
||||
</if>
|
||||
<else-if variable="event-place">
|
||||
<text variable="event-place" text-case="title"/>
|
||||
</else-if>
|
||||
</choose>
|
||||
</group>
|
||||
</macro>
|
||||
<!-- Series -->
|
||||
<macro name="collection">
|
||||
<choose>
|
||||
<if variable="collection-title" match="any">
|
||||
<text term="in" suffix=" "/>
|
||||
<group delimiter=", " suffix=". ">
|
||||
<text variable="collection-title"/>
|
||||
<text variable="collection-number" prefix="no. "/>
|
||||
<text variable="volume" prefix="vol. "/>
|
||||
</group>
|
||||
</if>
|
||||
</choose>
|
||||
</macro>
|
||||
<!-- Citation -->
|
||||
<citation>
|
||||
<sort>
|
||||
<key variable="citation-number"/>
|
||||
</sort>
|
||||
<layout delimiter=", ">
|
||||
<group prefix="[" suffix="]" delimiter=", ">
|
||||
<text variable="citation-number"/>
|
||||
<text macro="citation-locator"/>
|
||||
</group>
|
||||
</layout>
|
||||
</citation>
|
||||
<!-- Bibliography -->
|
||||
<bibliography entry-spacing="0" second-field-align="flush">
|
||||
<layout>
|
||||
<!-- Citation Number -->
|
||||
<text variable="citation-number" prefix="[" suffix="]"/>
|
||||
<!-- Author(s) -->
|
||||
<text macro="author" suffix=", "/>
|
||||
<!-- Rest of Citation -->
|
||||
<choose>
|
||||
<!-- Specific Formats -->
|
||||
<if type="article-journal">
|
||||
<group delimiter=", ">
|
||||
<text macro="title"/>
|
||||
<text variable="container-title" font-style="italic" form="short"/>
|
||||
<text macro="locators"/>
|
||||
<text macro="page"/>
|
||||
<text macro="issued"/>
|
||||
<text macro="status"/>
|
||||
</group>
|
||||
<choose>
|
||||
<if variable="URL DOI" match="none">
|
||||
<text value="."/>
|
||||
</if>
|
||||
<else>
|
||||
<text value=","/>
|
||||
</else>
|
||||
</choose>
|
||||
<text macro="access"/>
|
||||
</if>
|
||||
<else-if type="paper-conference speech" match="any">
|
||||
<group delimiter=", " suffix=", ">
|
||||
<text macro="title"/>
|
||||
<text macro="event"/>
|
||||
<text macro="editor"/>
|
||||
</group>
|
||||
<text macro="collection"/>
|
||||
<group delimiter=", " suffix=".">
|
||||
<text macro="publisher"/>
|
||||
<text macro="issued"/>
|
||||
<text macro="page"/>
|
||||
<text macro="status"/>
|
||||
</group>
|
||||
<text macro="access"/>
|
||||
</else-if>
|
||||
<else-if type="chapter">
|
||||
<group delimiter=", " suffix=".">
|
||||
<text macro="title"/>
|
||||
<group delimiter=" ">
|
||||
<text term="in" suffix=" "/>
|
||||
<text variable="container-title" font-style="italic"/>
|
||||
</group>
|
||||
<text macro="locators"/>
|
||||
<text macro="editor"/>
|
||||
<text macro="collection"/>
|
||||
<text macro="publisher"/>
|
||||
<text macro="issued"/>
|
||||
<group delimiter=" ">
|
||||
<label variable="chapter-number" form="short"/>
|
||||
<text variable="chapter-number"/>
|
||||
</group>
|
||||
<text macro="page"/>
|
||||
</group>
|
||||
<text macro="access"/>
|
||||
</else-if>
|
||||
<else-if type="report">
|
||||
<group delimiter=", " suffix=".">
|
||||
<text macro="title"/>
|
||||
<text macro="publisher"/>
|
||||
<group delimiter=" ">
|
||||
<text variable="genre"/>
|
||||
<text variable="number"/>
|
||||
</group>
|
||||
<text macro="issued"/>
|
||||
</group>
|
||||
<text macro="access"/>
|
||||
</else-if>
|
||||
<else-if type="thesis">
|
||||
<group delimiter=", " suffix=".">
|
||||
<text macro="title"/>
|
||||
<text variable="genre"/>
|
||||
<text macro="publisher"/>
|
||||
<text macro="issued"/>
|
||||
</group>
|
||||
<text macro="access"/>
|
||||
</else-if>
|
||||
<else-if type="software">
|
||||
<group delimiter=". " suffix=".">
|
||||
<text macro="title"/>
|
||||
<text macro="issued" prefix="(" suffix=")"/>
|
||||
<text variable="genre"/>
|
||||
<text macro="publisher"/>
|
||||
</group>
|
||||
<text macro="access"/>
|
||||
</else-if>
|
||||
<else-if type="article">
|
||||
<group delimiter=", " suffix=".">
|
||||
<text macro="title"/>
|
||||
<text macro="issued"/>
|
||||
<group delimiter=": ">
|
||||
<text macro="publisher" font-style="italic"/>
|
||||
<text variable="number"/>
|
||||
</group>
|
||||
</group>
|
||||
<text macro="access"/>
|
||||
</else-if>
|
||||
<else-if type="webpage post-weblog post" match="any">
|
||||
<group delimiter=", " suffix=".">
|
||||
<text macro="author" suffix=", "/>
|
||||
<text macro="title" suffix="."/>
|
||||
</group>
|
||||
<text macro="access"/>
|
||||
</else-if>
|
||||
<else-if type="patent">
|
||||
<group delimiter=", ">
|
||||
<text macro="title"/>
|
||||
<text variable="number"/>
|
||||
<text macro="issued"/>
|
||||
</group>
|
||||
<text macro="access"/>
|
||||
</else-if>
|
||||
<!-- Online Video -->
|
||||
<else-if type="motion_picture">
|
||||
<text macro="geographic-location" suffix=". "/>
|
||||
<group delimiter=", " suffix=".">
|
||||
<text macro="title"/>
|
||||
<text macro="issued"/>
|
||||
</group>
|
||||
<text macro="access"/>
|
||||
</else-if>
|
||||
<else-if type="standard">
|
||||
<group delimiter=", " suffix=".">
|
||||
<text macro="title"/>
|
||||
<group delimiter=" ">
|
||||
<text variable="genre"/>
|
||||
<text variable="number"/>
|
||||
</group>
|
||||
<text macro="geographic-location"/>
|
||||
<text macro="issued"/>
|
||||
</group>
|
||||
<text macro="access"/>
|
||||
</else-if>
|
||||
<!-- Generic/Fallback Formats -->
|
||||
<else-if type="bill book graphic legal_case legislation report song" match="any">
|
||||
<group delimiter=", " suffix=". ">
|
||||
<text macro="title"/>
|
||||
<text macro="locators"/>
|
||||
</group>
|
||||
<text macro="collection"/>
|
||||
<group delimiter=", " suffix=".">
|
||||
<text macro="publisher"/>
|
||||
<text macro="issued"/>
|
||||
<text macro="page"/>
|
||||
</group>
|
||||
<text macro="access"/>
|
||||
</else-if>
|
||||
<else-if type="article-magazine article-newspaper broadcast interview manuscript map patent personal_communication song speech thesis webpage" match="any">
|
||||
<group delimiter=", " suffix=".">
|
||||
<text macro="title"/>
|
||||
<text variable="container-title" font-style="italic"/>
|
||||
<text macro="locators"/>
|
||||
<text macro="publisher"/>
|
||||
<text macro="page"/>
|
||||
<text macro="issued"/>
|
||||
</group>
|
||||
<text macro="access"/>
|
||||
</else-if>
|
||||
<else>
|
||||
<group delimiter=", " suffix=". ">
|
||||
<text macro="title"/>
|
||||
<text variable="container-title" font-style="italic"/>
|
||||
<text macro="locators"/>
|
||||
</group>
|
||||
<text macro="collection"/>
|
||||
<group delimiter=", " suffix=".">
|
||||
<text macro="publisher"/>
|
||||
<text macro="page"/>
|
||||
<text macro="issued"/>
|
||||
</group>
|
||||
<text macro="access"/>
|
||||
</else>
|
||||
</choose>
|
||||
</layout>
|
||||
</bibliography>
|
||||
</style>
|
||||