{"id":153,"date":"2023-10-14T13:45:24","date_gmt":"2023-10-14T11:45:24","guid":{"rendered":"https:\/\/www.jhermann.digital\/?page_id=153"},"modified":"2025-06-12T14:00:53","modified_gmt":"2025-06-12T12:00:53","slug":"creative-coding","status":"publish","type":"page","link":"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/","title":{"rendered":"Creative Coding"},"content":{"rendered":"\n<div class=\"wp-block-group alignwide has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<p>Seit einem Seminar bei Prof. Dan Verst\u00e4ndig an der Otto-von-Guericke-Universis\u00e4t-Magdeburg mit dem Titel &#8222;Critical Code Studies&#8220; im Jahr 2018 habe ich mich mit der Anwendung <a href=\"https:\/\/processing.org\" target=\"_blank\" rel=\"noreferrer noopener\">Processing<\/a> und sp\u00e4ter auch mit <a href=\"https:\/\/p5js.org\" target=\"_blank\" rel=\"noreferrer noopener\">p5.js<\/a> besch\u00e4ftigt. Ich habe mich bereits vorher mit anderen visuell orientierten Programmiersprachen auseinandergesetzt, doch mit Processing er\u00f6ffneten sich mir ganz neue M\u00f6glichkeiten. Hier habe ich einfach mal ein paar Creative Coding Projekte gesammelt, die ich in der Vergangenheit programmiert habe. Auf meinem <a href=\"https:\/\/openprocessing.org\/user\/249665?o=12&amp;view=sketches\" target=\"_blank\" rel=\"noreferrer noopener\">Open Processing Profil<\/a> finden sich weitere p5.js Sketche.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Functions Describe the World Thing<\/h2>\n\n\n\n<p>Ein gemeinsam mit generativer KI (Gemini) erstelltes Projekt, das ein Kamerabild in eine Reihe oszillierender Kurven umwandelt. Zuvor habe ich etwas vergleichbares ohne Input und auch ohne Interaktion gemacht und habe mich gefragt, ob es funktionieren w\u00fcrde. \u00dcber das Ergebnis war ich sehr gl\u00fccklich und der Effekt hat genau das r\u00fcber gebracht, was ich mir davon gew\u00fcnscht habe. <\/p>\n\n\n\n<p><a href=\"https:\/\/openprocessing.org\/sketch\/2674593\">Link zu Open Processing<\/a><\/p>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\">Code<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p><br>let capture; \/\/ Variable to hold the camera input<\/p>\n\n\n\n<p>let phaseOffsets = []; \/\/ 2D array to store the current phase offset for each point<\/p>\n\n\n\n<p>\/\/ Set the vertical distance between lines<\/p>\n\n\n\n<p>const lineSpacing = 4;<\/p>\n\n\n\n<p>\/\/ Set a CONSTANT amplitude for the waves.<\/p>\n\n\n\n<p>const amplitude = 3.5;<\/p>\n\n\n\n<p>\/\/ Define a base frequency for the underlying wave structure.<\/p>\n\n\n\n<p>const baseFrequency = 0.05;<\/p>\n\n\n\n<p>\/\/ Smoothing factor. A smaller value means slower, smoother transitions.<\/p>\n\n\n\n<p>const smoothing = 0.08;&nbsp;<\/p>\n\n\n\n<p>\/**<\/p>\n\n\n\n<p>&nbsp;* p5.js setup function, runs once at the beginning.<\/p>\n\n\n\n<p>&nbsp;*\/<\/p>\n\n\n\n<p>function setup() {<\/p>\n\n\n\n<p>const canvasSize = min(windowWidth, windowHeight);<\/p>\n\n\n\n<p>createCanvas(canvasSize, canvasSize);<\/p>\n\n\n\n<p>\/\/ &#8212; CAMERA SETUP &#8212;<\/p>\n\n\n\n<p>capture = createCapture(VIDEO);<\/p>\n\n\n\n<p>capture.size(width, height);<\/p>\n\n\n\n<p>capture.hide();<\/p>\n\n\n\n<p>\/\/ &#8212; INITIALIZE PHASE OFFSETS ARRAY &#8212;<\/p>\n\n\n\n<p>\/\/ Pre-populate the 2D array to store the smoothed frequency values.<\/p>\n\n\n\n<p>for (let y = 0; y &lt; height; y += lineSpacing) {<\/p>\n\n\n\n<p>let rowz = [];<\/p>\n\n\n\n<p>for (let x = 0; x &lt; width; x += 2) {<\/p>\n\n\n\n<p>rowz.push(0);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>phaseOffsets.push(rowz);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>\/**<\/p>\n\n\n\n<p>&nbsp;* p5.js draw function, runs in a continuous loop.<\/p>\n\n\n\n<p>&nbsp;*\/<\/p>\n\n\n\n<p>function draw() {<\/p>\n\n\n\n<p>background(0);<\/p>\n\n\n\n<p>capture.loadPixels();<\/p>\n\n\n\n<p>if (capture.pixels.length === 0) {<\/p>\n\n\n\n<p>return;<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>stroke(255, 200);<\/p>\n\n\n\n<p>noFill();<\/p>\n\n\n\n<p>strokeWeight(1);<\/p>\n\n\n\n<p>for (let y_idx = 0; y_idx &lt; phaseOffsets.length; y_idx++) {<\/p>\n\n\n\n<p>const y = y_idx * lineSpacing;<\/p>\n\n\n\n<p>beginShape();<\/p>\n\n\n\n<p>for (let x_idx = 0; x_idx &lt; phaseOffsets[y_idx].length; x_idx++) {<\/p>\n\n\n\n<p>const x = x_idx * 2;<\/p>\n\n\n\n<p>\/\/ &#8212; PIXEL ANALYSIS &#8212;<\/p>\n\n\n\n<p>const pixelX = floor(x);<\/p>\n\n\n\n<p>const pixelY = floor(y);<\/p>\n\n\n\n<p>const index = (pixelY * width + pixelX) * 4;<\/p>\n\n\n\n<p>const r = capture.pixels[index];<\/p>\n\n\n\n<p>const g = capture.pixels[index + 1];<\/p>\n\n\n\n<p>const b = capture.pixels[index + 2];<\/p>\n\n\n\n<p>const brightness = (r + g + b) \/ 3;<\/p>\n\n\n\n<p>\/\/ &#8212; SMOOTHED PHASE MODULATION &#8212;<\/p>\n\n\n\n<p>\/\/ 1. Normalize the brightness to a 0.0 &#8211; 1.0 range<\/p>\n\n\n\n<p>let normalizedBrightness = brightness \/ 255.0;<\/p>\n\n\n\n<p>\/\/ 2. Apply an exponential curve to better match human perception.<\/p>\n\n\n\n<p>\/\/ &nbsp; &nbsp;You can experiment with different exponents (e.g., 2, 3, or even 1.5)<\/p>\n\n\n\n<p>let curvedBrightness = pow(normalizedBrightness, 2);<\/p>\n\n\n\n<p>\/\/ 3. Map this new curved value to the target offset.<\/p>\n\n\n\n<p>const targetOffset = map(curvedBrightness, 0, 1, TWO_PI * 8, 0);<\/p>\n\n\n\n<p>\/\/ 2. Get the CURRENT offset from our storage array<\/p>\n\n\n\n<p>let currentOffset = phaseOffsets[y_idx][x_idx];<\/p>\n\n\n\n<p>\/\/ 3. Interpolate the current offset towards the target<\/p>\n\n\n\n<p>currentOffset = lerp(currentOffset, targetOffset, smoothing);<\/p>\n\n\n\n<p>\/\/ 4. Store the new smoothed value back in the array<\/p>\n\n\n\n<p>phaseOffsets[y_idx][x_idx] = currentOffset;<\/p>\n\n\n\n<p>\/\/ 5. Use the smoothed value to draw the wave<\/p>\n\n\n\n<p>const angle = x * baseFrequency + currentOffset;<\/p>\n\n\n\n<p>const waveY = sin(angle) * amplitude;<\/p>\n\n\n\n<p>vertex(x, y + waveY);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>endShape();<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>}a<\/p>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Binarain<\/h2>\n\n\n\n<p>Als eine Leistungserbringung im Rahmen meines Masterstudiums habe im Seminar &#8222;Critical Code Studies&#8220; zusammen mit einer Kommilitonin ein Creative Coding Projekt gemacht. Die Idee ist, dass ein Kamerabild mithilfe von Nullen und Einsen nachgezeichnet wird. Starke Ver\u00e4nderungen im Bild sorgen daf\u00fcr, dass die Zahlen eine gr\u00f6\u00dfere und l\u00e4ngere Spur ziehen. Das resultiert in einem Effekt, in dem sich eine Art Spur der Bewegungen durch die Szene zieht und nach unten verl\u00e4uft. Die Interpretation des Kunstwerks haben wir einfach mal offen gelassen \ud83d\ude09<\/p>\n\n\n\n<p><a href=\"https:\/\/openprocessing.org\/sketch\/1033786\" target=\"_blank\" rel=\"noreferrer noopener\">Link zu Open Processing<\/a><\/p>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\">Code<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>var zahlen = [];<br>var cam;<br>var prevFrame;<br>var threshold;<br>var camMode;<br>var scl = 1;<br>var arrLength = 2000;<br>var ct = 0;<br>var move;<\/p>\n\n\n\n<p>function setup() {<br>move=0;<br>frameRate(24);<br>\/\/createCanvas(window.innerWidth, window.innerHeight);<br>createCanvas(720,480);<br>background(130);<br>threshold = 40;<br>\/\/pixelDensity(1);<br>cam = createCapture(VIDEO);<br>cam.size(width\/scl,height\/scl);<br>cam.hide();<br>prevFrame = createImage(cam.width,cam.height);<\/p>\n\n\n\n<p>for(let i = 0; i &lt; arrLength; i++){<br>zahlen.push(new Zahl());<br>}<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>function draw() {<\/p>\n\n\n\n<p>switch(camMode){<br>case 1:<br>break;<br>case 2:<br>filter(GRAY);<br>break;<br>case 3:<br>filter(POSTERIZE, 2);<br>break;<br>case 4:<br>filter(THRESHOLD, 0.5);<br>break;<br>case 5:<br>filter(OPAQUE);<br>break;<br>case 6:<br>filter(DILATE);<br>break;<br>case 7:<br>filter(BLUR);<br>break;<br>case 8:<br>filter(ERODE);<br>break;<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>ct+=1;<\/p>\n\n\n\n<p>\/\/if(ct%3==0)background(230,5);<\/p>\n\n\n\n<p>cam.loadPixels();<br>prevFrame.loadPixels();<\/p>\n\n\n\n<p>if(ct%1==0){<br>for (let i = 0; i &lt; zahlen.length; i++) {<br>zahlen[i].display();<br>zahlen[i].move();<br>}<br>}<\/p>\n\n\n\n<p>prevFrame.copy(cam,0,0,cam.width,cam.height ,0,0,cam.width,cam.height);<br>}<\/p>\n\n\n\n<p>function keyPressed(){<br>switch(key){<br>case &#8218;1&#8216;:<br>camMode = 1;<br>break;<br>case &#8218;2&#8216;:<br>camMode = 2;<br>break;<br>case &#8218;3&#8216;:<br>camMode = 3;<br>break;<br>case &#8218;4&#8216;:<br>camMode = 4;<br>break;<br>case &#8218;5&#8216;:<br>camMode = 5;<br>break;<br>case &#8218;6&#8216;:<br>camMode = 6;<br>break;<br>case &#8218;7&#8216;:<br>camMode = 7;<br>break;<br>case &#8218;8&#8216;:<br>camMode = 8;<br>break;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>case 's':\n  save();<\/code><\/pre>\n\n\n\n<p>}<br>}<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>class Zahl {<\/p>\n\n\n\n<p>constructor() {<br>this.x = random(width);<br>this.y = random(height);<br>this.t = random(2,10);<br>let ran = random(0,1);<br>this.op = 30;<br>this.col = color(0,255,255);<br>this.col.setAlpha(this.op);<br>this.sz = 5;<br>this.trig = false;<br>this.timer = 0;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if(ran&gt;0.5){\n  this.numb = \"0\";\n}\nelse{\n  this.numb = \"1\";\n}\n\n\nfill(this.col);\ntextSize(this.sz);\ntext(this.numb,this.x,this.y);<\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<p>move(){<br>this.y += this.t;<br>if(this.y &gt; height){<br>this.y = 0;<br>this.op= 0;<br>this.col.setAlpha(this.op);<br>this.timer=0;<br>\/\/this.col=color(0,0,0);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  \/\/zahlen.pop();\n}<\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<p>display(){<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  \/\/background(255,255,255,5);\n\n\n  \/\/for (let x = 0; x &lt; cam.width; x+=1){\n  \/\/for (let y = 0; y &lt; cam.height; y+=1){\nlet pIndex = (floor(this.x\/scl) + floor(this.y\/scl) * cam.width)*4;\n\/\/print(pIndex);\n\nlet r1 = prevFrame.pixels&#91;pIndex];\nlet g1 = prevFrame.pixels&#91;pIndex+1];\nlet b1 = prevFrame.pixels&#91;pIndex+2];\n      \/\/let a1 = prevFrame.pixels&#91;pIndex+3];\n\nlet r2 = cam.pixels&#91;pIndex];\nlet g2 = cam.pixels&#91;pIndex+1];\nlet b2 = cam.pixels&#91;pIndex+2];\n      \/\/let a2 = cam.pixels&#91;pIndex+3];\n\nlet move = dist(r1,g1,b1,r2,g2,b2);\n\n\nif(move &gt; threshold){\n  this.op = 255;\n  this.col = color(r1,g1,b1);\n  this.col.setAlpha(this.op);\n  this.sz = 25;\n  this.trig = true;\n  this.timer = 50;\n}\n\nif(this.timer&gt;0)this.timer--;\nelse this.trig=false;\n\n\nif(this.sz&gt;5)this.sz-=0.5;\nif(this.op&gt;50)this.op-=10;\n\nthis.col.setAlpha(this.op);\nif(this.trig==true)fill(this.col);\nelse fill(color(r2,g2,b2));\n\nnoStroke();\ntextSize(this.sz);\ntext(this.numb,this.x,this.y);<\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>class Zahl {<\/p>\n\n\n\n<p>constructor() {<br>this.x = random(width);<br>this.y = random(height);<br>this.t = random(2,10);<br>let ran = random(0,1);<br>this.op = 30;<br>this.col = color(0,255,255);<br>this.col.setAlpha(this.op);<br>this.sz = 5;<br>this.trig = false;<br>this.timer = 0;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if(ran&gt;0.5){\n  this.numb = \"0\";\n}\nelse{\n  this.numb = \"1\";\n}\n\n\nfill(this.col);\ntextSize(this.sz);\ntext(this.numb,this.x,this.y);<\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<p>move(){<br>this.y += this.t;<br>if(this.y &gt; height){<br>this.y = 0;<br>this.op= 0;<br>this.col.setAlpha(this.op);<br>this.timer=0;<br>\/\/this.col=color(0,0,0);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  \/\/zahlen.pop();\n}<\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<p>display(){<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  \/\/background(255,255,255,5);\n\n\n  \/\/for (let x = 0; x &lt; cam.width; x+=1){\n  \/\/for (let y = 0; y &lt; cam.height; y+=1){\nlet pIndex = (floor(this.x\/scl) + floor(this.y\/scl) * cam.width)*4;\n\/\/print(pIndex);\n\nlet r1 = prevFrame.pixels&#91;pIndex];\nlet g1 = prevFrame.pixels&#91;pIndex+1];\nlet b1 = prevFrame.pixels&#91;pIndex+2];\n      \/\/let a1 = prevFrame.pixels&#91;pIndex+3];\n\nlet r2 = cam.pixels&#91;pIndex];\nlet g2 = cam.pixels&#91;pIndex+1];\nlet b2 = cam.pixels&#91;pIndex+2];\n      \/\/let a2 = cam.pixels&#91;pIndex+3];\n\nlet move = dist(r1,g1,b1,r2,g2,b2);\n\n\nif(move &gt; threshold){\n  this.op = 255;\n  this.col = color(r1,g1,b1);\n  this.col.setAlpha(this.op);\n  this.sz = 25;\n  this.trig = true;\n  this.timer = 50;\n}\n\nif(this.timer&gt;0)this.timer--;\nelse this.trig=false;\n\n\nif(this.sz&gt;5)this.sz-=0.5;\nif(this.op&gt;50)this.op-=10;\n\nthis.col.setAlpha(this.op);\nif(this.trig==true)fill(this.col);\nelse fill(color(r2,g2,b2));\n\nnoStroke();\ntextSize(this.sz);\ntext(this.numb,this.x,this.y);<\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<p>}<\/p>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<div aria-label=\"Collage Gallery\" class=\"wp-block-coblocks-gallery-collage alignwide is-style-tiled has-small-gutter\"><ul><li class=\"wp-block-coblocks-gallery-collage__item item-1\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-21.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"480\" alt=\"Gallery Image\" class=\"wp-image-277\" data-id=\"277\" data-imglink=\"\" data-index=\"0\" data-link=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/download-21\/\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-21.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-21.png 720w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-21-300x200.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-2\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-36_.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"710\" height=\"474\" alt=\"Gallery Image\" class=\"wp-image-303\" data-id=\"303\" data-imglink=\"\" data-index=\"1\" data-link=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/download-36_\/\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-36_.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-36_.png 710w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-36_-300x200.png 300w\" sizes=\"auto, (max-width: 710px) 100vw, 710px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-3\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-17-1.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"480\" alt=\"Gallery Image\" class=\"wp-image-276\" data-id=\"276\" data-imglink=\"\" data-index=\"2\" data-link=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/download-17-2\/\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-17-1.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-17-1.png 720w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-17-1-300x200.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-4\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-20.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"480\" alt=\"Gallery Image\" class=\"wp-image-278\" data-id=\"278\" data-imglink=\"\" data-index=\"3\" data-link=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/download-20\/\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-20.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-20.png 720w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-20-300x200.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/figure><\/li><\/ul><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignwide has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\">Failing Sand<\/h2>\n\n\n\n<p>Ich tr\u00e4ume schon seit einigen Jahren von einem Computerspiel, das die Physik einer Pixel Simulation (wie <a rel=\"noreferrer noopener\" href=\"https:\/\/noitagame.com\" target=\"_blank\">Noita<\/a> oder <a rel=\"noreferrer noopener\" href=\"https:\/\/powdertoy.co.uk\" target=\"_blank\">Powdertoy<\/a>) auf spielerische Weise einbindet. Deshalb habe ich einfach Mal eine einfache Pixelsimulation (Falling Sand) in p5.js programmiert, um besser zu verstehen, wie so ein Programm \u00fcberhaupt grundlegend funktionieren w\u00fcrde.   <\/p>\n\n\n\n<p><a href=\"https:\/\/openprocessing.org\/sketch\/1027771\" target=\"_blank\" rel=\"noreferrer noopener\">Link zu Open Processing<\/a><\/p>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\">Code<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>let size = 5;<br>let screen = 500;<br>let ratio = screen\/size;<br>let pixels=[];<br>let mode;<br>let pencil = 0;<br>let watrspd = 1;<\/p>\n\n\n\n<p>function setup() {<br>createCanvas(screen, screen);<br>background(128,210,255);<br>mode=1;<br>frameRate(30);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for(let i = 0; i &lt; ratio; i++)\n{\n        pixels&#91;i]=&#91;];\n        for(let j = 0; j &lt; 0; j++)\n        {\n                \/\/pixels&#91;i]&#91;j] = new Pixel(i,j,1);\n        }\n}<\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<p>function draw() {<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>background(128,210,255);\nfor(let i = 0; i &lt; ratio; i++)\n{\n        for(let j = 0; j &lt; ratio-1; j++)\n        {\n            if(pixels&#91;i]&#91;j]!=null &amp;&amp; pixels&#91;i]&#91;j].updated==false)\n            {\n                    \/\/is sand?\n                    if(pixels&#91;i]&#91;j].type==1){\n                    \/\/nothing under sand?   \n                    if(pixels&#91;i]&#91;j+1]==null){\n                        pixels&#91;i]&#91;j+1] = pixels&#91;i]&#91;j];\n                        pixels&#91;i]&#91;j] = null;\n                        pixels&#91;i]&#91;j+1].updated=true;\n\n                    }\n                    \/\/water under sand? \n                    else if(pixels&#91;i]&#91;j+1].type==2){\n                        let saver = pixels&#91;i]&#91;j+1];\n                        pixels&#91;i]&#91;j+1] = pixels&#91;i]&#91;j]; \n                        pixels&#91;i]&#91;j] = saver;\n                        \/\/pixels&#91;i]&#91;j].updated=true;\n                        pixels&#91;i]&#91;j+1].updated=true;\n                    }\n                    \/\/water right under sand?   \n                    else if(i+1&lt;ratio&amp;&amp;pixels&#91;i+1]&#91;j+1]!=null&amp;&amp;pixels&#91;i+1]&#91;j+1].type==2){\n                        let saver = pixels&#91;i+1]&#91;j+1];\n                        pixels&#91;i+1]&#91;j+1] = pixels&#91;i]&#91;j]; \n                        pixels&#91;i]&#91;j] = saver;\n                        pixels&#91;i]&#91;j].updated=true;\n                        pixels&#91;i+1]&#91;j+1].updated=true;\n                    }\n                    \/\/water left under sand?    \n                    else if(i-1&gt;=0&amp;&amp;pixels&#91;i-1]&#91;j+1]!=null&amp;&amp;pixels&#91;i-1]&#91;j+1].type==2){\n                        let saver = pixels&#91;i-1]&#91;j+1];\n                        pixels&#91;i-1]&#91;j+1] = pixels&#91;i]&#91;j]; \n                        pixels&#91;i]&#91;j] = saver;\n                        pixels&#91;i]&#91;j].updated=true;\n                        pixels&#91;i-1]&#91;j+1].updated=true;\n                    }\n                    \/\/nothing right under sand? \n                    else if(i+1&lt;ratio&amp;&amp;pixels&#91;i+1]&#91;j+1]==null){\n                        pixels&#91;i+1]&#91;j+1] = pixels&#91;i]&#91;j];\n                        pixels&#91;i]&#91;j] = null;\n                        pixels&#91;i+1]&#91;j+1].updated=true;\n                    }\n                    \/\/nothing left under sand?\n                    else if(i-1&gt;=0&amp;&amp;pixels&#91;i-1]&#91;j+1]==null){\n                        pixels&#91;i-1]&#91;j+1] = pixels&#91;i]&#91;j];\n                        pixels&#91;i]&#91;j] = null;\n                        pixels&#91;i-1]&#91;j+1].updated=true;\n                    }\n\n                    }\n\n                    \/\/is water?\n                    if(pixels&#91;i]&#91;j]!=null&amp;&amp;pixels&#91;i]&#91;j].type==2){\n\n                    \/\/nothing under water?\n                    if(pixels&#91;i]&#91;j+1]==null){\n                        pixels&#91;i]&#91;j+1] = pixels&#91;i]&#91;j];\n                        pixels&#91;i]&#91;j] = null;\n                        pixels&#91;i]&#91;j+1].updated=true;\n\n                    }\n\n\n                    \/\/nothing left under water? (old)\n                    else if(i-1&gt;=0&amp;&amp;pixels&#91;i-1]&#91;j+1]==null){\n                        pixels&#91;i-1]&#91;j+1] = pixels&#91;i]&#91;j];\n                        pixels&#91;i]&#91;j] = null;\n                        pixels&#91;i-1]&#91;j+1].updated=true;\n                    }\n\n                    \/\/nothing right under water? (old)\n                    else if(i+1&lt;ratio&amp;&amp;pixels&#91;i+1]&#91;j+1]==null){\n                        pixels&#91;i+1]&#91;j+1] = pixels&#91;i]&#91;j];\n                        pixels&#91;i]&#91;j] = null;\n                        pixels&#91;i+1]&#91;j+1].updated=true;\n                    }\n\n                    \/\/nothing left to water?\n                    else if(i-1&gt;=0&amp;&amp;pixels&#91;i-1]&#91;j]==null){\n                        let distance = 0;\n                        while(distance&lt;=watrspd&amp;&amp;i-1-distance&gt;=0&amp;&amp;pixels&#91;i-1-distance]&#91;j]==null){\n                            pixels&#91;i-1-distance]&#91;j] = pixels&#91;i-distance]&#91;j];\n                            pixels&#91;i-distance]&#91;j] = null;\n                            pixels&#91;i-1-distance]&#91;j].updated=true;\n                            distance+=1;\n                        }\n\n                    }\n\n                    \/\/nothing right to water?\n                    else if(i+1&lt;ratio&amp;&amp;pixels&#91;i+1]&#91;j]==null){\n                        let distance = 0;\n                        while(distance&lt;=watrspd&amp;&amp;i+1+distance&lt;ratio&amp;&amp;pixels&#91;i+1+distance]&#91;j]==null){\n                            pixels&#91;i+1+distance]&#91;j] = pixels&#91;i+distance]&#91;j];\n                            pixels&#91;i+distance]&#91;j] = null;\n                            pixels&#91;i+1+distance]&#91;j].updated=true;\n                            distance+=1;\n                        }\n                    }\n\n                    }\n            }       \n        }   \n}\n\nfor(let i = 0; i &lt; ratio; i++)\n{\n        for(let j = 0; j &lt; ratio; j++)\n        {   \n            if(pixels&#91;i]&#91;j]!=null){\n                if(pixels&#91;i]&#91;j].type==2)pixels&#91;i]&#91;j].color=color(96+random(2),157+random(2),191+random(5));\n                fill(pixels&#91;i]&#91;j].color);\n                noStroke();\n                rect(i*size,j*size,size,size);\n                pixels&#91;i]&#91;j].setUpdated(false);\n            }\n        }\n}\n\nif(mouseIsPressed==true)\n{\n    mouseXVal = mouseX;\n    mouseYVal = mouseY;\n\n    if(mouseXVal&gt;screen)mouseXVal=screen;\n    if(mouseXVal&lt;0)mouseXVal=0;\n    if(mouseYVal&gt;screen)mouseYVal=screen;\n    if(mouseYVal&lt;0)mouseYVal=0;\n\n    mouseXVal = int(mouseXVal\/size);\n    mouseYVal = int(mouseYVal\/size);\n\n    if(mouseX&lt;width-5){\n\n    switch (mode) {\ncase 1:\n  if(pixels&#91;mouseXVal]&#91;mouseYVal]==null){\n        pixels&#91;mouseXVal]&#91;mouseYVal]=new Pixel(mouseXVal,mouseYVal,1);\n        pixels&#91;mouseXVal+1]&#91;mouseYVal]=new Pixel(mouseXVal,mouseYVal,1);\n        pixels&#91;mouseXVal]&#91;mouseYVal+1]=new Pixel(mouseXVal,mouseYVal,1);\n        pixels&#91;mouseXVal+1]&#91;mouseYVal+1]=new Pixel(mouseXVal,mouseYVal,1);\n    }\n  break;\ncase 2:\n  if(pixels&#91;mouseXVal]&#91;mouseYVal]==null){\n        pixels&#91;mouseXVal]&#91;mouseYVal]=new Pixel(mouseXVal,mouseYVal,2);\n        pixels&#91;mouseXVal+1]&#91;mouseYVal]=new Pixel(mouseXVal,mouseYVal,2);\n        pixels&#91;mouseXVal]&#91;mouseYVal+1]=new Pixel(mouseXVal,mouseYVal,2);\n        pixels&#91;mouseXVal+1]&#91;mouseYVal+1]=new Pixel(mouseXVal,mouseYVal,2);\n        }\n            break;\ncase 3:\n  if(pixels&#91;mouseXVal]&#91;mouseYVal]==null){\n        pixels&#91;mouseXVal]&#91;mouseYVal]=new Pixel(mouseXVal,mouseYVal,3);\n        pixels&#91;mouseXVal+1]&#91;mouseYVal]=new Pixel(mouseXVal,mouseYVal,3);\n        pixels&#91;mouseXVal]&#91;mouseYVal+1]=new Pixel(mouseXVal,mouseYVal,3);\n        pixels&#91;mouseXVal+1]&#91;mouseYVal+1]=new Pixel(mouseXVal,mouseYVal,3);\n    }\n  break;\ncase 4:\n  pixels&#91;mouseXVal]&#91;mouseYVal]=null; \n  break;\ndefault:\n  \/\/  <\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    }\n}\nfill(255,100);\nellipse(mouseX,mouseY,pencil+1,pencil+1);<\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<p>function keyTyped() {<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    switch (key) {\ncase '1':\n  mode = 1;\n  break;\ncase '2':\n  mode = 2;\n  break;\ncase '3':\n  mode = 3;\n  break;\ncase '4':\n  mode = 4;  \n  break;\ndefault:\n  \/\/  <\/code><\/pre>\n\n\n\n<p>}<br>}<\/p>\n\n\n\n<p>\/<em>function mouseWheel(event) { \/\/print(pencil); if(abs(pencil)&lt;200)pencil += event.delta\/25; \/\/pencil += event.delta\/20; }<\/em>\/<\/p>\n\n\n\n<p>\/*function mouseDown()<br>{<br>mouseXVal = mouseX;<br>mouseYVal = mouseY;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if(mouseXVal&gt;screen)mouseXVal=screen;\nif(mouseXVal&lt;0)mouseXVal=0;\nif(mouseYVal&gt;screen)mouseYVal=screen;\nif(mouseYVal&lt;0)mouseYVal=0;\n\nmouseXVal = int(mouseXVal\/size);\nmouseYVal = int(mouseYVal\/size);\n\nif(pixels&#91;mouseXVal]&#91;mouseYVal]==null)pixels&#91;mouseXVal]&#91;mouseYVal]=new Pixel(mouseXVal,mouseYVal,1);\n\/\/print(\"X: \"+mouseXVal+\" Y: \"+mouseYVal);<\/code><\/pre>\n\n\n\n<p>}*\/<\/p>\n\n\n\n<p>class Pixel{<br>constructor(x,y,t){<br>this.x = x;<br>this.y = y;<br>this.type = t;<br>if(this.type==1){<br>this.color = color(205+random(30),133+random(30),63+random(30))<br>\/\/this.velocity =<br>}<br>if(this.type==2){<br>this.color = color(96+random(10),157+random(10),191+random(10))<br>}<br>if(this.type==3){<br>this.color = color(128+random(5),128+random(5),128+random(5))<br>}<br>this.updated = false;<br>}<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>getType(){\n    return this.type;\n}\n\ngetUpdated(){\n    return this.updated;\n}\n\nsetUpdated(newupdated){\n    this.updated = newupdated;\n}<\/code><\/pre>\n\n\n\n<p>}<\/p>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<div aria-label=\"Collage Gallery\" class=\"wp-block-coblocks-gallery-collage alignwide is-style-tiled has-small-gutter\"><ul><li class=\"wp-block-coblocks-gallery-collage__item item-1\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-31.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"1000\" alt=\"Gallery Image\" class=\"wp-image-295\" data-id=\"295\" data-imglink=\"\" data-index=\"0\" data-link=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/download-31\/\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-31.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-31.png 1000w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-31-300x300.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-31-150x150.png 150w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-31-768x768.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-2\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-34.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"1000\" alt=\"Gallery Image\" class=\"wp-image-297\" data-id=\"297\" data-imglink=\"\" data-index=\"1\" data-link=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/download-34\/\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-34.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-34.png 1000w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-34-300x300.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-34-150x150.png 150w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-34-768x768.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-3\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-35.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"1000\" alt=\"Gallery Image\" class=\"wp-image-296\" data-id=\"296\" data-imglink=\"\" data-index=\"2\" data-link=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/download-35\/\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-35.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-35.png 1000w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-35-300x300.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-35-150x150.png 150w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-35-768x768.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-4\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-35.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"1000\" alt=\"Gallery Image\" class=\"wp-image-296\" data-id=\"296\" data-imglink=\"\" data-index=\"3\" data-link=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/download-35\/\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-35.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-35.png 1000w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-35-300x300.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-35-150x150.png 150w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-35-768x768.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure><\/li><\/ul><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Turtle Grid <\/h2>\n\n\n\n<p>Inspiriert von einem Klassiker in Einstiegskursen zur Informatik, habe ich ein Turtle-Programm erzeugt, das eine zuf\u00e4llige Linie auf einem Raster abl\u00e4uft und dabei solche Strukturen erzeugt.<\/p>\n\n\n\n<p><a href=\"https:\/\/openprocessing.org\/sketch\/1027368\" target=\"_blank\" rel=\"noreferrer noopener\">Link zu Open Processing<\/a><\/p>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\">Code<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>let posX;<br>let posY;<\/p>\n\n\n\n<p>let vecX;<br>let vecY;<\/p>\n\n\n\n<p>let step;<br>let c;<\/p>\n\n\n\n<p>function setup() {<br>createCanvas(400, 400);<br>background(220);<br>posX = width\/2;<br>posY = height\/2;<\/p>\n\n\n\n<p>step = 32;<br>vecX = step;<br>vecY = step;<br>c=0;<br>}<\/p>\n\n\n\n<p>function draw() {<br>c+=0.001;<br>let ran = int(random(5));<\/p>\n\n\n\n<p>switch(ran) {<br>case 1:<br>vecX<em>=1; break; case 2: vecY<\/em>=1;<br>break;<br>case 3:<br>vecX<em>=-1; break; case 4: vecY<\/em>=-1;<br>break;<\/p>\n\n\n\n<p>default:<br>\/\/ code block<br>}<\/p>\n\n\n\n<p>print(ran);<\/p>\n\n\n\n<p>if(posX&lt;0){ posX+=step; } if(posX&gt;width){<br>posX-=step;<br>}<\/p>\n\n\n\n<p>if(posY&lt;0){ posY+=step; } if(posY&gt;height){<br>posY-=step;<br>}<\/p>\n\n\n\n<p>color(255,0,0);<br>line(posX,posY,posX+=vecX,posY+=vecY);<\/p>\n\n\n\n<p>}<\/p>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<div aria-label=\"Collage Gallery\" class=\"wp-block-coblocks-gallery-collage alignwide is-style-tiled has-small-gutter\"><ul><li class=\"wp-block-coblocks-gallery-collage__item item-1\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_1.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" alt=\"Gallery Image\" class=\"wp-image-171\" data-id=\"171\" data-imglink=\"\" data-index=\"0\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_1.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_1.png 800w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_1-300x300.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_1-150x150.png 150w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_1-768x768.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-2\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download1.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" alt=\"Gallery Image\" class=\"wp-image-170\" data-id=\"170\" data-imglink=\"\" data-index=\"1\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download1.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download1.png 800w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download1-300x300.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download1-150x150.png 150w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download1-768x768.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-3\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_7.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" alt=\"Gallery Image\" class=\"wp-image-169\" data-id=\"169\" data-imglink=\"\" data-index=\"2\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_7.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_7.png 800w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_7-300x300.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_7-150x150.png 150w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_7-768x768.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-4\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_2.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" alt=\"Gallery Image\" class=\"wp-image-168\" data-id=\"168\" data-imglink=\"\" data-index=\"3\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_2.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_2.png 800w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_2-300x300.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_2-150x150.png 150w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download_2-768x768.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><\/li><\/ul><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Infinite Gummi Worm<\/h2>\n\n\n\n<p>Es fing alles an mit einem Kreis, der sich in verschiedenen Bewegungen, die Farbe kontinuierlich \u00e4ndernd, \u00fcber die Leinwand bewegt. In diesem Prozess sind viele sehr unterschiedliche Bilder entstanden<\/p>\n\n\n\n<p><a href=\"https:\/\/openprocessing.org\/sketch\/1027383\" target=\"_blank\" rel=\"noreferrer noopener\">Link zu Open Processing<\/a><\/p>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\">Code<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>var x = 0;<br>var t = 0;<br>var t2 = 0;<br>var speed = 3;<br>var speed2 = 5;<\/p>\n\n\n\n<p>function setup() {<br>createCanvas(600, 600);<br>}<\/p>\n\n\n\n<p>function draw() {<br>\/\/background(220);<br>noStroke();<br>\/\/stroke(255,255,255);<br>ellipse(t+sin(x)<em>20,t2+sin(x<\/em>20),100+sin(x)<em>10,100+sin(x)<\/em>10,50);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/fill(sin(x*2)*255,sin(x)*255,tan(x),100);\nfill(sin(x)*255,cos(x)*250,100,255);\n\n\nif(t&gt;=width || t&lt;0){\n    speed=speed*-1;\n\n}\n\nif(t2&gt;=height || t2&lt;0){\n    speed2=speed2*-1;\n\n}\n\nx=x+0.1;\nt=t+speed;\nt2=t2+speed2;<\/code><\/pre>\n\n\n\n<p>}<\/p>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<div aria-label=\"Collage Gallery\" class=\"wp-block-coblocks-gallery-collage alignwide is-style-tiled has-small-gutter\"><ul><li class=\"wp-block-coblocks-gallery-collage__item item-1\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-5.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"400\" alt=\"Gallery Image\" class=\"wp-image-189\" data-id=\"189\" data-index=\"0\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-5.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-5.png 400w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-5-300x300.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-5-150x150.png 150w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-2\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-4.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"400\" alt=\"Gallery Image\" class=\"wp-image-188\" data-id=\"188\" data-index=\"1\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-4.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-4.png 400w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-4-300x300.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-4-150x150.png 150w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-3\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-3.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"200\" height=\"200\" alt=\"Gallery Image\" class=\"wp-image-187\" data-id=\"187\" data-index=\"2\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-3.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-3.png 200w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-3-150x150.png 150w\" sizes=\"auto, (max-width: 200px) 100vw, 200px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-4\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-15.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"600\" alt=\"Gallery Image\" class=\"wp-image-182\" data-id=\"182\" data-index=\"3\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-15.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-15.png 600w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-15-300x300.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-15-150x150.png 150w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/figure><\/li><\/ul><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Noise Particle Flow<\/h2>\n\n\n\n<p>Rauschen ist faszinierend. Und die M\u00f6glichkeit, mit Rauschen interessante visuelle Kompositionen zu schaffen, bietet nahezu grenzenlose M\u00f6glichkeiten. Hier wird eine Art Flow-Field erzeugt, um Partikel ein Bild nachzeichnen zu lassen. Die Partikel werden dann dem Rauschen entsprechend in bestimmte Bahnen geleitet und ver\u00e4ndern dabei die Farbe. <\/p>\n\n\n\n<p><a href=\"https:\/\/openprocessing.org\/sketch\/1034450\" target=\"_blank\" rel=\"noreferrer noopener\">Link zu Open Processing<\/a><\/p>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\">Code<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>var inc = 0.05;<br>var scl = 20;<br>var cols, rows;<br>var zoff = 0;<br>var count = 2000;<\/p>\n\n\n\n<p>var fr;<\/p>\n\n\n\n<p>var particles = [];<br>var flowfield;<\/p>\n\n\n\n<p>function setup() {<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/frameRate(10);\n\/\/colorMode(RGB, 100);\ncreateCanvas(700, 700);\nbackground(0);\ncols = floor(width\/scl);\nrows = floor(height\/scl);\n\/\/pixelDensity(1);\n\/\/ noiseDetail(4);\nfr=createP('');\n\nflowfield = new Array(cols*rows);\n\nfor(var i = 0; i &lt; count; i++){\n    particles&#91;i]=new Partikel();\n}<\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<p>function draw() {<br>\/\/background(0,10);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var yoff = 0;\nfor (var y = 0; y &lt; rows; y++)\n{\n    var xoff = 0;\n    for (var x = 0; x &lt; cols; x++)\n    {\n        var index = x + y * cols;\n        var angle = noise(xoff,yoff,sin(zoff))*TWO_PI;\n        var v = p5.Vector.fromAngle(angle);\n        \/\/v.setMag(map(mouseX,0,width,0.0001,5));\n        v.setMag(0.05);\n        flowfield&#91;index] = v;\n        xoff+=inc;\n\n      \/*stroke(255,50);\n        push();\n        translate(x*scl,y*scl);\n        rotate(v.heading());\n        strokeWeight(1);\n        line(0,0,scl,0);\n        pop();*\/\n\n        \/\/xoff+=inc;\n\n    }\n    yoff+=inc;\n}\n\/\/zoff+=PI\/500;\n\/\/if(zoff%TWO_PI==0)print(\"loop\");\n\n\nfor(var i = 0; i &lt; particles.length; i++){\n\n    particles&#91;i].update();\n    particles&#91;i].show();\n    particles&#91;i].overedge();\n    particles&#91;i].follow(flowfield);\n    \/\/print(particles&#91;i].pos.x+\" \"+particles&#91;i].pos.y);\n}\n\n\/\/fr.html(floor(frameRate()));<\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>var maxAlpha = 50;<br>var alphainc = 0.1;<\/p>\n\n\n\n<p>function Partikel(){<br>this.pos = createVector(random(width),random(height));<br>this.vel = p5.Vector.random2D();<br>this.acc = createVector(0,0);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>this.maxspeed = 2;\nthis.alpha = 0;\nthis.col = color(map(this.pos.x,0,width,0,255),0,map(this.pos.y,0,height,0,255),this.alpha);\n\n\n\nthis.follow = function(vectors){\n    var x = floor(this.pos.x \/ scl);\n    var y = floor(this.pos.y \/ scl);\n    var index = x + y *cols;\n    var force = vectors&#91;index];\n\n    this.applyForce(force);\n\n\n}\n\nthis.update = function(){\n    this.vel.add(this.acc);\n    this.vel.limit(this.maxspeed);\n    this.pos.add(this.vel);\n    this.acc.mult(0);\n    if(this.alpha&lt;maxAlpha)this.alpha+=alphainc;\n}\n\nthis.applyForce = function(force){\n\n        this.acc.add(force);\n\n\n}\n\nthis.show = function(){\n\n    r = red(this.col);\n    g = green(this.col);\n    b = blue(this.col);\n    mapX = map(this.pos.x,0,width,0,255);\n    mapY = map(this.pos.y,0,height,0,255);\n    newcol = color((r*25 + mapX)\/26,0,(b*25+ mapY)\/26,this.alpha);\n    this.col = newcol;\n    \/\/print(r);\n    fill(this.col);\n    noStroke();\n    ellipse(this.pos.x,this.pos.y,2,2);\n}\n\nthis.overedge = function(){\n    if(this.pos.x &gt; width){\n        this.pos.x = 0;\n        \/\/this.col = color(map(this.pos.x,0,width,0,255),0,map(this.pos.y,0,height,0,255),this.alpha);\n    }\n    if(this.pos.x &lt; 0){\n        this.pos.x = width;\n        \/\/this.col = color(map(this.pos.x,0,width,0,255),0,map(this.pos.y,0,height,0,255),this.alpha);\n    }\n    if(this.pos.y &gt; height){\n        this.pos.y = 0;\n        \/\/this.col = color(map(this.pos.x,0,width,0,255),0,map(this.pos.y,0,height,0,255),this.alpha);\n    }\n    if(this.pos.y &lt; 0){\n        this.pos.y = height;\n        \/\/this.col = color(map(this.pos.x,0,width,0,255),0,map(this.pos.y,0,height,0,255),this.alpha);\n    }\n\n    \/*\n    if(this.pos.x &gt; width){\n\n        this.vel.set(this.vel.x*-1,this.vel.y);\n    }\n    if(this.pos.x &lt; 0){\n\n        this.vel.set(this.vel.x*-1,this.vel.y);\n    }\n    if(this.pos.y &gt; height){\n\n        this.vel.set(this.vel.x,this.vel.y*-1);\n    }\n    if(this.pos.y &lt; 0){\n\n        this.vel.set(this.vel.x,this.vel.y*-1); \n    }*\/\n}<\/code><\/pre>\n\n\n\n<p>}<\/p>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<div aria-label=\"Collage Gallery\" class=\"wp-block-coblocks-gallery-collage alignwide is-style-tiled has-small-gutter\"><ul><li class=\"wp-block-coblocks-gallery-collage__item item-1\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-20-1024x1024.jpg\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" alt=\"Gallery Image\" class=\"wp-image-249\" data-id=\"249\" data-index=\"0\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-20-1024x1024.jpg\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-20-1024x1024.jpg 1024w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-20-300x300.jpg 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-20-150x150.jpg 150w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-20-768x768.jpg 768w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-20.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-2\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-24-1024x1024.jpg\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" alt=\"Gallery Image\" class=\"wp-image-248\" data-id=\"248\" data-index=\"1\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-24-1024x1024.jpg\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-24-1024x1024.jpg 1024w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-24-300x300.jpg 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-24-150x150.jpg 150w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-24-768x768.jpg 768w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-24.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-3\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-26-1024x1024.jpg\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" alt=\"Gallery Image\" class=\"wp-image-247\" data-id=\"247\" data-index=\"2\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-26-1024x1024.jpg\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-26-1024x1024.jpg 1024w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-26-300x300.jpg 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-26-150x150.jpg 150w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-26-768x768.jpg 768w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-26.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-4\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-28-1024x1024.jpg\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" alt=\"Gallery Image\" class=\"wp-image-246\" data-id=\"246\" data-index=\"3\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-28-1024x1024.jpg\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-28-1024x1024.jpg 1024w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-28-300x300.jpg 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-28-150x150.jpg 150w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-28-768x768.jpg 768w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/photo_2023-10-22_12-39-28.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><\/ul><\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Noise Particle Flow Reloaded<\/h2>\n\n\n\n<p>Noise Particle Flow habe ich mehrere Male \u00fcberarbeitet und in einer Version ist das folgende Ergebnis entstanden. Hier sind sind es nicht so feine Linien, die entlang des Flow Fields gezeichnet werden, sondern dickere Striche, wodurch ein etwas anderer Effekt entsteht. <\/p>\n\n\n\n<p><a href=\"https:\/\/openprocessing.org\/sketch\/1418578\" target=\"_blank\" rel=\"noreferrer noopener\">Link zu Open Processing<\/a><\/p>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\">Code<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>var inc = 0.05;<br>var scl = 20;<br>var cols, rows;<br>var zoff = 0;<br>var count = 1000;<\/p>\n\n\n\n<p>var fr;<\/p>\n\n\n\n<p>var particles = [];<br>var flowfield;<\/p>\n\n\n\n<p>function setup() {<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/frameRate(10);\n\/\/colorMode(RGB, 100);\ncreateCanvas(1280 , 720);\nbackground(0);\ncols = floor(width\/scl);\nrows = floor(height\/scl);\n\/\/pixelDensity(1);\n\/\/ noiseDetail(4);\nfr=createP('');\n\nflowfield = new Array(cols*rows);\n\nfor(var i = 0; i &lt; count; i++){\n    particles&#91;i]=new Partikel();\n}<\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<p>function draw() {<br>background(0,10);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var yoff = 0;\nfor (var y = 0; y &lt; rows; y++)\n{\n    var xoff = 0;\n    for (var x = 0; x &lt; cols; x++)\n    {\n        var index = x + y * cols;\n        var angle = noise(xoff,yoff,zoff)*10;\n        var v = p5.Vector.fromAngle(angle);\n        \/\/v.setMag(map(mouseX,0,width,0.0001,5));\n        v.setMag(0.05);\n        flowfield&#91;index] = v;\n        xoff+=inc;\n\n      \/*stroke(255,50);\n        push();\n        translate(x*scl,y*scl);\n        rotate(v.heading());\n        strokeWeight(1);\n        line(0,0,scl,0);\n        pop();*\/\n\n        \/\/xoff+=inc;\n\n    }\n    yoff+=inc;\n}\nzoff+=PI\/600;\n\/\/if(zoff%TWO_PI==0)print(\"loop\");\n\n\nfor(var i = 0; i &lt; particles.length; i++){\n\n    particles&#91;i].update();\n    particles&#91;i].show();\n    particles&#91;i].overedge();\n    particles&#91;i].follow(flowfield);\n    \/\/print(particles&#91;i].pos.x+\" \"+particles&#91;i].pos.y);\n}\n\n\/\/fr.html(floor(frameRate()));<\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>var maxAlpha = 255;<br>var alphainc = 255;<\/p>\n\n\n\n<p>function Partikel(){<br>this.pos = createVector(random(width),random(height));<br>this.vel = p5.Vector.random2D();<br>this.acc = createVector(0,0);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>this.maxspeed = 4.5;\nthis.alpha = 0;\nthis.col = color(map(this.pos.x,0,width,0,255),0,map(this.pos.y,0,height,0,255),this.alpha);\n\n\n\nthis.follow = function(vectors){\n    var x = floor(this.pos.x \/ scl);\n    var y = floor(this.pos.y \/ scl);\n    var index = x + y *cols;\n    var force = vectors&#91;index];\n\n    this.applyForce(force);\n\n\n}\n\nthis.update = function(){\n    this.vel.add(this.acc);\n    this.vel.limit(this.maxspeed);\n    this.pos.add(this.vel);\n    this.acc.mult(0);\n    if(this.alpha&lt;maxAlpha)this.alpha+=alphainc;\n}\n\nthis.applyForce = function(force){\n\n        this.acc.add(force);\n\n\n}\n\nthis.show = function(){\n\n    r = red(this.col);\n    g = green(this.col);\n    b = blue(this.col);\n    mapX = map(this.pos.x,0,width,0,255);\n    mapY = map(this.pos.y,0,height,0,255);\n    newcol = color((r*25 + mapX)\/26,50,(b*25+ mapY)\/26,this.alpha);\n    this.col = newcol;\n    \/\/print(r);\n    fill(this.col);\n    noStroke();\n    ellipse(this.pos.x,this.pos.y,16,16);\n}\n\nthis.overedge = function(){\n    if(this.pos.x &gt; width){\n        this.pos.x = 0;\n        \/\/this.col = color(map(this.pos.x,0,width,0,255),0,map(this.pos.y,0,height,0,255),this.alpha);\n    }\n    if(this.pos.x &lt; 0){\n        this.pos.x = width;\n        \/\/this.col = color(map(this.pos.x,0,width,0,255),0,map(this.pos.y,0,height,0,255),this.alpha);\n    }\n    if(this.pos.y &gt; height){\n        this.pos.y = 0;\n        \/\/this.col = color(map(this.pos.x,0,width,0,255),0,map(this.pos.y,0,height,0,255),this.alpha);\n    }\n    if(this.pos.y &lt; 0){\n        this.pos.y = height;\n        \/\/this.col = color(map(this.pos.x,0,width,0,255),0,map(this.pos.y,0,height,0,255),this.alpha);\n    }\n\n    \/*\n    if(this.pos.x &gt; width){\n\n        this.vel.set(this.vel.x*-1,this.vel.y);\n    }\n    if(this.pos.x &lt; 0){\n\n        this.vel.set(this.vel.x*-1,this.vel.y);\n    }\n    if(this.pos.y &gt; height){\n\n        this.vel.set(this.vel.x,this.vel.y*-1);\n    }\n    if(this.pos.y &lt; 0){\n\n        this.vel.set(this.vel.x,this.vel.y*-1); \n    }*\/\n}<\/code><\/pre>\n\n\n\n<p>}<\/p>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<div aria-label=\"Collage Gallery\" class=\"wp-block-coblocks-gallery-collage alignwide is-style-tiled has-small-gutter\"><ul><li class=\"wp-block-coblocks-gallery-collage__item item-1\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-29-1024x576.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" alt=\"Gallery Image\" class=\"wp-image-290\" data-id=\"290\" data-imglink=\"\" data-index=\"0\" data-link=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/download-29\/\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-29-1024x576.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-29-1024x576.png 1024w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-29-300x169.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-29-768x432.png 768w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-29.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-2\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-14-1-1024x576.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" alt=\"Gallery Image\" class=\"wp-image-259\" data-id=\"259\" data-index=\"1\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-14-1-1024x576.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-14-1-1024x576.png 1024w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-14-1-300x169.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-14-1-768x432.png 768w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-14-1-1536x864.png 1536w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-14-1-2048x1152.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-3\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-12-1-1024x576.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" alt=\"Gallery Image\" class=\"wp-image-260\" data-id=\"260\" data-index=\"2\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-12-1-1024x576.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-12-1-1024x576.png 1024w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-12-1-300x169.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-12-1-768x432.png 768w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-12-1-1536x864.png 1536w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-12-1-2048x1152.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-4\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-11-1-1024x576.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" alt=\"Gallery Image\" class=\"wp-image-261\" data-id=\"261\" data-index=\"3\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-11-1-1024x576.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-11-1-1024x576.png 1024w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-11-1-300x169.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-11-1-768x432.png 768w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-11-1-1536x864.png 1536w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-11-1-2048x1152.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><\/ul><\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Perlin Noise Blob &amp; Mikrofon<\/h2>\n\n\n\n<p>Auf meiner Reise p5.js besser kennenzulernen und verstehen, ist mir immer klarer geworden, welche Bandbreite an M\u00f6glichkeiten Rauschen \u00fcberhaupt bietet. Hier werden die \u00e4u\u00dferen Punkte eines Kreises entlang eines Rauschmusters verzerrt. Nach einer vollen Umdrehung schlie\u00dft der Wert wieder dort an, wo er angefangen hat. In der zweiten Variante habe ich das Ganze mit Mikrofon-Input erweitert. <\/p>\n\n\n\n<p><a href=\"https:\/\/openprocessing.org\/sketch\/1240629\" target=\"_blank\" rel=\"noreferrer noopener\">Link zu Open Processing<\/a> <\/p>\n\n\n\n<p><a href=\"https:\/\/openprocessing.org\/sketch\/1241140\" target=\"_blank\" rel=\"noreferrer noopener\">Link zu Open Processing (mit Mikrofon)<\/a><\/p>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\">Code 1<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>let phase = 0;<br>let zoff = 0;<\/p>\n\n\n\n<p>function setup() {<br>createCanvas(windowWidth, windowHeight);<br>background(255);<br>}<\/p>\n\n\n\n<p>function draw() {<br>background(255,50);<br>translate(width \/ 2, height \/ 2);<br>noStroke();<\/p>\n\n\n\n<p>let noiseMax = map(mouseX,0,width,0,2);<br>let blobs = 20;<br>for (let j = blobs; j &gt; 0; j&#8211;){<br>\/\/stroke(255);<br>\/\/strokeWeight(2);<br>beginShape();<br>for (let i = 0; i &lt; TWO_PI; i += radians(3)) {<br>let xoff = map(cos(i + phase), -1, 1, 0, noiseMax);<br>let yoff = map(sin(i + phase), -1, 1, 0, noiseMax);<br>let r = map(noise(xoff, yoff, zoff), 0, 1, 0, 10+(j*15));<br>let x = r * cos(i);<br>let y = r * sin(i);<br>vertex(x, y);<br>}<br>fill(map(j,0,blobs,0,255,0),150,255);<br>endShape(CLOSE);<br>}<\/p>\n\n\n\n<p>\/\/phase += 0.003;<br>zoff += mouseY\/5000;<br>}<\/p>\n<\/div><\/details><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\">Code 2 <\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<p>let phase = 0;<br>let zoff = 0;<br>let m = 0;<br>let mic;<br>let levAv;<\/p>\n\n\n\n<p>function setup() {<br>createCanvas(windowWidth, windowHeight);<br>background(255);<br>mic = new p5.AudioIn();<br>mic.start();<br>levAv=0;<br>}<\/p>\n\n\n\n<p>function draw() {<br>background(0,50);<br>translate(width \/ 2, height \/ 2);<br>noStroke();<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>m = mic.getLevel();\nlev = map(m,0,1,0,30);<\/code><\/pre>\n\n\n\n<p>let decay = 10;<br>levAv=levAv*(decay-1)+lev;<br>levAv\/=decay;<br>\/\/print(levAv+&#8220; &#8222;+lev);<\/p>\n\n\n\n<p>let noiseMax = lev;<br>let blobs = 15;<br>for (let j = blobs; j &gt; 0; j&#8211;){<br>\/\/stroke(255);<br>\/\/strokeWeight(2);<br>beginShape();<br>for (let i = 0; i &lt; TWO_PI; i += radians(4)) {<br>let xoff = map(cos(i + phase), -1, 1, 0, noiseMax);<br>let yoff = map(sin(i + phase), -1, 1, 0, noiseMax);<br>let r = map(noise(xoff, yoff, zoff), 0, 1, 50, 10+(j<em>15))<\/em>(1+levAv\/10);<br>let x = r * cos(i);<br>let y = r * sin(i);<br>vertex(x, y);<br>}<br>fill(map(j,0,blobs,0,255,0),255,100);<br>endShape(CLOSE);<br>}<\/p>\n\n\n\n<p>\/\/phase += 0.003;<br>zoff += levAv\/100;<br>}<\/p>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<div aria-label=\"Collage Gallery\" class=\"wp-block-coblocks-gallery-collage alignwide is-style-tiled has-small-gutter\"><ul><li class=\"wp-block-coblocks-gallery-collage__item item-1\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-23-1024x474.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"474\" alt=\"Gallery Image\" class=\"wp-image-286\" data-id=\"286\" data-imglink=\"\" data-index=\"0\" data-link=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/download-23\/\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-23-1024x474.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-23-1024x474.png 1024w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-23-300x139.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-23-768x356.png 768w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-23-1536x711.png 1536w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-23.png 1866w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-2\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-24-1024x474.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"474\" alt=\"Gallery Image\" class=\"wp-image-285\" data-id=\"285\" data-imglink=\"\" data-index=\"1\" data-link=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/download-24\/\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-24-1024x474.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-24-1024x474.png 1024w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-24-300x139.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-24-768x356.png 768w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-24-1536x711.png 1536w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-24.png 1866w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-3\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-22-1024x474.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"474\" alt=\"Gallery Image\" class=\"wp-image-282\" data-id=\"282\" data-imglink=\"\" data-index=\"2\" data-link=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/download-22\/\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-22-1024x474.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-22-1024x474.png 1024w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-22-300x139.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-22-768x356.png 768w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-22-1536x711.png 1536w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-22.png 1866w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><li class=\"wp-block-coblocks-gallery-collage__item item-4\"><figure class=\"wp-block-coblocks-gallery-collage__figure\"><a href=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-26-1024x474.png\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"474\" alt=\"Gallery Image\" class=\"wp-image-283\" data-id=\"283\" data-imglink=\"\" data-index=\"3\" data-link=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/download-26\/\" src=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-26-1024x474.png\" srcset=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-26-1024x474.png 1024w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-26-300x139.png 300w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-26-768x356.png 768w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-26-1536x711.png 1536w, https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-26.png 1866w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><\/ul><\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Seit einem Seminar bei Prof. Dan Verst\u00e4ndig an der Otto-von-Guericke-Universis\u00e4t-Magdeburg mit dem Titel &#8222;Critical Code Studies&#8220; im Jahr 2018 habe ich mich mit der Anwendung Processing und sp\u00e4ter auch mit p5.js besch\u00e4ftigt. Ich habe mich bereits vorher mit anderen visuell orientierten Programmiersprachen auseinandergesetzt, doch mit Processing er\u00f6ffneten sich mir ganz neue M\u00f6glichkeiten. Hier habe ich [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":120,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","footnotes":""},"class_list":["post-153","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.1.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Creative Coding - Jannis Hermann<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Creative Coding - Jannis Hermann\" \/>\n<meta property=\"og:description\" content=\"Seit einem Seminar bei Prof. Dan Verst\u00e4ndig an der Otto-von-Guericke-Universis\u00e4t-Magdeburg mit dem Titel &#8222;Critical Code Studies&#8220; im Jahr 2018 habe ich mich mit der Anwendung Processing und sp\u00e4ter auch mit p5.js besch\u00e4ftigt. Ich habe mich bereits vorher mit anderen visuell orientierten Programmiersprachen auseinandergesetzt, doch mit Processing er\u00f6ffneten sich mir ganz neue M\u00f6glichkeiten. Hier habe ich [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/\" \/>\n<meta property=\"og:site_name\" content=\"Jannis Hermann\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-12T12:00:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-21.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"16\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/\",\"url\":\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/\",\"name\":\"Creative Coding - Jannis Hermann\",\"isPartOf\":{\"@id\":\"https:\/\/www.jhermann.digital\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-21.png\",\"datePublished\":\"2023-10-14T11:45:24+00:00\",\"dateModified\":\"2025-06-12T12:00:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/#primaryimage\",\"url\":\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-21.png\",\"contentUrl\":\"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-21.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/www.jhermann.digital\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Projekte\",\"item\":\"https:\/\/www.jhermann.digital\/index.php\/projekte\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Creative Coding\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jhermann.digital\/#website\",\"url\":\"https:\/\/www.jhermann.digital\/\",\"name\":\"Jannis Hermann\",\"description\":\"Digital Sandbox\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jhermann.digital\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Creative Coding - Jannis Hermann","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/","og_locale":"de_DE","og_type":"article","og_title":"Creative Coding - Jannis Hermann","og_description":"Seit einem Seminar bei Prof. Dan Verst\u00e4ndig an der Otto-von-Guericke-Universis\u00e4t-Magdeburg mit dem Titel &#8222;Critical Code Studies&#8220; im Jahr 2018 habe ich mich mit der Anwendung Processing und sp\u00e4ter auch mit p5.js besch\u00e4ftigt. Ich habe mich bereits vorher mit anderen visuell orientierten Programmiersprachen auseinandergesetzt, doch mit Processing er\u00f6ffneten sich mir ganz neue M\u00f6glichkeiten. Hier habe ich [&hellip;]","og_url":"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/","og_site_name":"Jannis Hermann","article_modified_time":"2025-06-12T12:00:53+00:00","og_image":[{"url":"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-21.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"16\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/","url":"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/","name":"Creative Coding - Jannis Hermann","isPartOf":{"@id":"https:\/\/www.jhermann.digital\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/#primaryimage"},"image":{"@id":"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-21.png","datePublished":"2023-10-14T11:45:24+00:00","dateModified":"2025-06-12T12:00:53+00:00","breadcrumb":{"@id":"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/#primaryimage","url":"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-21.png","contentUrl":"https:\/\/www.jhermann.digital\/wp-content\/uploads\/2023\/10\/Download-21.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.jhermann.digital\/index.php\/projekte\/creative-coding\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/www.jhermann.digital\/"},{"@type":"ListItem","position":2,"name":"Projekte","item":"https:\/\/www.jhermann.digital\/index.php\/projekte\/"},{"@type":"ListItem","position":3,"name":"Creative Coding"}]},{"@type":"WebSite","@id":"https:\/\/www.jhermann.digital\/#website","url":"https:\/\/www.jhermann.digital\/","name":"Jannis Hermann","description":"Digital Sandbox","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jhermann.digital\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"}]}},"_links":{"self":[{"href":"https:\/\/www.jhermann.digital\/index.php\/wp-json\/wp\/v2\/pages\/153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jhermann.digital\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.jhermann.digital\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.jhermann.digital\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jhermann.digital\/index.php\/wp-json\/wp\/v2\/comments?post=153"}],"version-history":[{"count":74,"href":"https:\/\/www.jhermann.digital\/index.php\/wp-json\/wp\/v2\/pages\/153\/revisions"}],"predecessor-version":[{"id":843,"href":"https:\/\/www.jhermann.digital\/index.php\/wp-json\/wp\/v2\/pages\/153\/revisions\/843"}],"up":[{"embeddable":true,"href":"https:\/\/www.jhermann.digital\/index.php\/wp-json\/wp\/v2\/pages\/120"}],"wp:attachment":[{"href":"https:\/\/www.jhermann.digital\/index.php\/wp-json\/wp\/v2\/media?parent=153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}