diff --git a/img/analysis_3/Torricelli-Probleme.png b/img/analysis_3/Torricelli-Probleme.png new file mode 100644 index 0000000..2d44f8e Binary files /dev/null and b/img/analysis_3/Torricelli-Probleme.png differ diff --git a/photonics.typ b/photonics.typ index 86ed837..ab70afd 100644 --- a/photonics.typ +++ b/photonics.typ @@ -67,7 +67,10 @@ Diese Dokumentation ist primär für eine Linux-Umgebung ausgelegt. Windows-spez #include "src/informatik_3.typ" #pagebreak() -= Photonics += Bildverarbeitung +#include "src/bildverarbeitung_1.typ" +#include "src/bildverarbeitung_2.typ" +#include "src/bildverarbeitung_3.typ" #pagebreak() = Physik @@ -82,6 +85,9 @@ Diese Dokumentation ist primär für eine Linux-Umgebung ausgelegt. Windows-spez #include "src/elektronik_3.typ" #pagebreak() += Photonics +#pagebreak() + = Optische Messtechnik #include "src/optische_messtechnik.typ" #pagebreak() diff --git a/src/analysis_3.typ b/src/analysis_3.typ index 8eb53ee..6696b8d 100644 --- a/src/analysis_3.typ +++ b/src/analysis_3.typ @@ -70,12 +70,12 @@ fill: (x, y) => if y == 0 {gray.lighten(40%)}, ==== Statische lösung Möchte man z.b. für $y^' eq 3x^2y plus x^2$ die Statische Lösung so muss man $y^'$ mit 0 ersetzen so das gilt: #grid(columns: (1fr, 1fr), gutter: 10pt, [ - $ 0 eq 3x^2y plus x^2 $ - $ 0 eq x^2 dot (3y plus 1) $ - $ 0 eq 3y plus 1 $ - $ -1 eq 3y $ - $ minus frac(1, 3) eq y $ - $ y(x) eq minus frac(1, 3) $ + $ 0 eq 3x^2y plus x^2 \ + 0 eq x^2 dot (3y plus 1) \ + 0 eq 3y plus 1 \ + -1 eq 3y \ + minus frac(1, 3) eq y \ + y(x) eq minus frac(1, 3) $ ], [ Da $x^2$ einen belibigen Wert haben kann kann es ausgeschlossen werden da logischerweise der rest also $0 eq 3y plus 1$ sein muss. ]) @@ -83,23 +83,38 @@ Da $x^2$ einen belibigen Wert haben kann kann es ausgeschlossen werden da logisc ==== Nicht Statische lösung #grid(columns: (1fr, 1fr), gutter: 10pt, [ - $ y^' eq x^2 dot y $ - $ frac(1, y) dot y^' eq x^2 $ - $ integral frac(1, y) dot y^' dot "dx" eq integral x^2 dot "dx" $ - $ integral frac(1, y) dot "dy" eq integral x^2 dot "dx" $ - $ ln(abs(y)) eq frac(1, 3) dot x^3 + c $ - $ abs(y) eq e^(frac(1, 3) dot x^3 + c) eq e^c dot e^(frac(1, 3) dot x^3) $ - $ y(x) eq plus.minus e^c dot e^(frac(1, 3) dot x^3) eq C dot e^(frac(1, 3) dot x^3) "mit" C in RR \\ {0} $ + $ y^' eq x^2 dot y \ + frac(1, y) dot y^' eq x^2 \ + integral frac(1, y) dot y^' dot "dx" eq integral x^2 dot "dx" \ + integral frac(1, y) dot "dy" eq integral x^2 dot "dx" \ + ln(abs(y)) eq frac(1, 3) dot x^3 + c \ + abs(y) eq e^(frac(1, 3) dot x^3 + c) eq e^c dot e^(frac(1, 3) dot x^3) \ + y(x) eq plus.minus e^c dot e^(frac(1, 3) dot x^3) eq C dot e^(frac(1, 3) dot x^3) "mit" C in RR \\ {0} $ ], [ - $y^' eq frac("dy", "dx")$ - $integral frac(1, y) dot "dy" eq ln(abs(y))$ - -]) - #table(columns: (0.5fr, 1fr), [$C_1$, $C_2$], [Entsthun beim Integrieren], [$c$], [$c eq C_2 - C_1$], [$C$], [$C eq -c$], ) +]) + +=== Torricelli-Probleme +#image("../img/analysis_3/Torricelli-Probleme.png", width: 100%) + +Ausflussgeschwindigkeit $v eq root(, 2 dot g dot h)$ \ +Volumen-Fluss $Q eq A dot v$ \ +$ +V^' (t) eq Q_i (t) minus Q_a (t) \ +A dot h(t) eq Q_i (t) - A_a dot root(, 2 dot g dot h(t)) \ +h^' (t) eq frac(Q_i, A) minus frac(A_a, A) dot root(, 2 dot g dot h) +$ + +$ cases( +"OED: " h^' (t) &eq frac(Q_i, A) minus frac(A_a, A) dot root(, 2 dot g dot h) \ +"IC: " h(t_0) &eq h_0 +) $ + diff --git a/src/bachelorarbeit.typ b/src/bachelorarbeit.typ index ffe374d..9693633 100644 --- a/src/bachelorarbeit.typ +++ b/src/bachelorarbeit.typ @@ -241,6 +241,30 @@ Falls in einer gui umgebung gearbeitet wird gibt es dafür schaltflächen, aber [$omega$], [```typ $omega$ ```], ) ]) + +== Farben +#table(columns: (1fr,) * 9, gutter: 6pt, align: (center + horizon), stroke: none, +table.cell(fill: black)[#text(fill: white)[black]], +table.cell(fill: gray)[gray], +table.cell(fill: silver)[silver], +table.cell(fill: white, stroke: black)[white], +table.cell(fill: navy)[#text(fill: white)[navy]], +table.cell(fill: blue)[blue], +table.cell(fill: aqua)[aqua], +table.cell(fill: teal)[teal], +table.cell(fill: eastern)[eastern], +table.cell(fill: purple)[#text(fill: white)[purple]], +table.cell(fill: fuchsia)[fuchsia], +table.cell(fill: maroon)[maroon], +table.cell(fill: red)[red], +table.cell(fill: orange)[orange], +table.cell(fill: yellow)[yellow], +table.cell(fill: olive)[olive], +table.cell(fill: green)[green], +table.cell(fill: lime)[lime], +) +Alternativ kann auch einfach `rgb("#001f3f")` verwendet werden. + == cetz importieren: ```typ diff --git a/src/bildverarbeitung_1.typ b/src/bildverarbeitung_1.typ new file mode 100644 index 0000000..6877d6b --- /dev/null +++ b/src/bildverarbeitung_1.typ @@ -0,0 +1,76 @@ + +== opencv +=== install opencv +```sh +sudo pacman -S opencv hdf5 vtk +``` + +=== einfaches fenster +#table(columns: 1fr, [```cpp +#include +int main(){ + cv::Mat img = cv::Mat(cv::Size(800, 600), CV_8UC3, cv::Scalar(255, 255, 255)); + + // code + + cv::imshow("Image", img); + cv::waitKey(0); + return 0; +} +```]) + +=== vorlage zentriert +#table(columns: 1fr, [```cpp +#include +cv::Mat create_window(std::string name){ + int screen_width = 2560; + int screen_height = 1600; + int window_width = 800; + int window_height = 600; + + cv::Mat img = cv::Mat(cv::Size(window_width, window_height), CV_8UC3, cv::Scalar(255, 255, 255)); + + cv::namedWindow(name, cv::WINDOW_AUTOSIZE); + cv::moveWindow(name, (screen_width - window_width) / 2, (screen_height - window_height) / 2); + + return img; +} + +int main(){ + cv::Mat img = create_window("Image"); + + // code + + cv::imshow("Image", img); + while (1){ + char key = cv::waitKey(0); + if (key == 27){ // ESC + break; + } + } + return 0; +} +```]) + +=== line +#table(columns: 1fr, [```cpp +cv::line(img, cv::Point(40, 40), cv::Point(60, 40), cv::Scalar(255, 255, 0), 10); +```]) +#table(columns: (1fr, 1fr), +[img], [Zeichen fläche (`cv::Mat`)], +[cv::Point(40, 40)], [Startpunkt], +[cv::Point(60, 40)], [Endpoint], +[cv::Scalar], [Farbe in BRG], +[10], [Linienbreite], +) + +=== circle +#table(columns: 1fr, [```cpp +cv::circle(img, cv::Point(10, 10), 20, cv::Scalar(0, 0, 128), 30); +```]) +#table(columns: (1fr, 1fr), +[img], [Zeichen fläche (`cv::Mat`)], +[cv::Point(10, 10)], [Mittelpunkt], +[cv::Scalar], [Farbe in BRG], +[30], [Linienbreite (-1 für geffülter Kreis], +) diff --git a/src/bildverarbeitung_2.typ b/src/bildverarbeitung_2.typ new file mode 100644 index 0000000..e69de29 diff --git a/src/bildverarbeitung_3.typ b/src/bildverarbeitung_3.typ new file mode 100644 index 0000000..e69de29 diff --git a/src/elektronik_3.typ b/src/elektronik_3.typ index 1cabf84..37ed622 100644 --- a/src/elektronik_3.typ +++ b/src/elektronik_3.typ @@ -299,7 +299,41 @@ Jitter bezeichnet eine nicht gerade Flanke, sondern eine, die wie in der Abbildu ==== TCP/IP ==== Sockets -==== HTTP/HTML, JS/Web-Programmierung + +==== HTTP/HTML +*Aufbau* +HTTP besteht aus einem Header und einem Body +Header: +- Eingeleitet durch + - das Verb +Ressource +Protocol (Request) + - Protocol +Status (Response) +- Metainformation +- Aufgeteilt in Header-Felder der Form +- Name: Inhalt +Body: +- vollständige Payload + + +```html + + + +Page Title + + + +

This is a Heading

+

This is a paragraph.

+ + + +``` + +==== JS/Web-Programmierung + + + ==== MQTT + ==== Sicherheit diff --git a/src/informatik_3.typ b/src/informatik_3.typ index 4cd03ad..43a9a61 100644 --- a/src/informatik_3.typ +++ b/src/informatik_3.typ @@ -541,6 +541,46 @@ std::ofstream myfile("hello.txt", std::ios::app); [```sh git checkout ```], [in den branch wechseln], ) +=== randome +```cpp #include ``` \ +Zahlen sind random aber jedes mal die gleichen +#table(columns: 1fr, [```cpp +std::random_device rd; +std::mt19937 gen(rd()); +std::uniform_int_distribution die_dist(1, 6); +int number = die_dist(gen); // Roll the die once! +```]) +Mit randome Seed +#table(columns: 1fr, [```cpp +std::mt19937 gen(0); // seed +std::uniform_int_distribution die_dist(1, 6); +int number = die_dist(gen); // Roll the die once! +```]) + +=== for loop +#table(columns: 1fr, [```cpp +std::list values = {1, 2, 3}; +for (auto it = list.begin(); it < list.end(); it++){ + std::cout << list.at(it) << std::endl; +} +```]) + +#table(columns: 1fr, [```cpp +std::list values = {1, 2, 3}; +for (auto value : values){ + std::cout << value << std::endl; +} +```]) + +#table(columns: 1fr, [```cpp +std::list values = {1, 2, 3}; +for (auto &value : values){ + std::cout << value << std::endl; +} +```]) + + + === testing ```cpp #include