{"id":10,"date":"2023-11-19T17:26:35","date_gmt":"2023-11-19T17:26:35","guid":{"rendered":"https:\/\/www.crazy-memorys.ch\/halti40\/?page_id=10"},"modified":"2025-02-07T21:32:26","modified_gmt":"2025-02-07T21:32:26","slug":"one-page","status":"publish","type":"page","link":"https:\/\/halti40.ch\/","title":{"rendered":""},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Wann?<\/h2>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:30%\">\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-fe9cc265 wp-block-group-is-layout-flex\">\n<p class=\"has-large-font-size\">31.12.2023<\/p>\n\n\n\n<p class=\"has-large-font-size\">ab 19:00 bis &#8230;<\/p>\n\n\n\n<p><a href=\"#anmeldung\">Direkt zur Anmeldung<\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:70%\">\n<iframe loading=\"lazy\" width=\"95%\" height=\"500px\" frameborder=\"0\" allowfullscreen=\"\" allow=\"geolocation\" src=\"https:\/\/halti40.ch\/firework-simulator-v2\/dist\/index.html\"><\/iframe>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Wo?<\/h2>\n\n\n\n<p>Pavillon Murg-Auen-Park<\/p>\n\n\n\n<iframe loading=\"lazy\" width=\"95%\" height=\"500px\" frameborder=\"0\" allowfullscreen=\"\" allow=\"geolocation\" src=\"\/\/umap.osm.ch\/de\/map\/halti40_6285\"><\/iframe>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"\/\/umap.osm.ch\/de\/map\/halti40_6285\">Vollbildanzeige<\/a><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p><strong>Mit der Bahn<\/strong><br>Bis Hauptbahnhof Frauenfeld \/ von da aus 10 Minuten Fussweg<\/p>\n\n\n\n<p><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p><strong>Mit dem Bus<\/strong><br>Bis Haltestelle Frauenfeld, Jugendmusikschule \/ von da aus 5 Minuten Fussweg<\/p>\n<\/div>\n<\/div>\n\n\n\n<p><strong>Mit dem Auto<\/strong><\/p>\n\n\n\n<ul id=\"ul_2fd91754\" class=\"wp-block-list\">\n<li>PP Unteres M\u00e4tteli \/ 5 Minuten Fussweg<\/li>\n\n\n\n<li>PP Oberes M\u00e4tteli \/ 7 Minuten Fussweg<\/li>\n\n\n\n<li>P11 Milit\u00e4rsporthalle \/ 8 Minuten Fussweg<\/li>\n<\/ul>\n\n\n\n<p><em>Achtung beim Murg Auen Park stehen keine Parkpl\u00e4tze zur Verf\u00fcgung und gleichzeitig ist noch die Silvestergala des Weihnachtszirkus.<\/em><\/p>\n\n\n<p id=\"anmeldung\">&#8211;<\/p>\n\n\n<h2 class=\"wp-block-heading\">Weiteres<\/h2>\n\n\n\n<p>Ihr m\u00fcsst keine Geschenke anschleppen, ich brauche nur Geld f\u00fcr meinen teuren Blechhaufen \ud83d\ude09<\/p>\n\n\n\n<div style=\"height:139px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>!!Danke Manu f\u00fcr die Page!!<\/p>\n<\/blockquote>\n\n\n\n<canvas id=\"canvas\">Canvas is not supported in your browser.<\/canvas>\n\n<script>\n\/\/ when animating on canvas, it is best to use requestAnimationFrame instead of setTimeout or setInterval\n\/\/ not supported in all browsers though and sometimes needs a prefix, so we need a shim\nwindow.requestAnimFrame = ( function() {\n\treturn window.requestAnimationFrame ||\n\t\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\t\tfunction( callback ) {\n\t\t\t\t\twindow.setTimeout( callback, 1000 \/ 60 );\n\t\t\t\t};\n})();\n\n\/\/ now we will setup our basic variables for the demo\nvar canvas = document.getElementById( 'canvas' ),\n\t\tctx = canvas.getContext( '2d' ),\n\t\t\/\/ full screen dimensions\n\t\tcw = window.innerWidth,\n\t\tch = window.innerHeight,\n\t\t\/\/ firework collection\n\t\tfireworks = [],\n\t\t\/\/ particle collection\n\t\tparticles = [],\n\t\t\/\/ starting hue\n\t\thue = 120,\n\t\t\/\/ when launching fireworks with a click, too many get launched at once without a limiter, one launch per 5 loop ticks\n\t\tlimiterTotal = 5,\n\t\tlimiterTick = 0,\n\t\t\/\/ this will time the auto launches of fireworks, one launch per 80 loop ticks\n\t\ttimerTotal = 80,\n\t\ttimerTick = 0,\n\t\tmousedown = false,\n\t\t\/\/ mouse x coordinate,\n\t\tmx,\n\t\t\/\/ mouse y coordinate\n\t\tmy;\n\t\t\n\/\/ set canvas dimensions\ncanvas.width = cw;\ncanvas.height = ch;\n\n\/\/ now we are going to setup our function placeholders for the entire demo\n\n\/\/ get a random number within a range\nfunction random( min, max ) {\n\treturn Math.random() * ( max - min ) + min;\n}\n\n\/\/ calculate the distance between two points\nfunction calculateDistance( p1x, p1y, p2x, p2y ) {\n\tvar xDistance = p1x - p2x,\n\t\t\tyDistance = p1y - p2y;\n\treturn Math.sqrt( Math.pow( xDistance, 2 ) + Math.pow( yDistance, 2 ) );\n}\n\n\/\/ create firework\nfunction Firework( sx, sy, tx, ty ) {\n\t\/\/ actual coordinates\n\tthis.x = sx;\n\tthis.y = sy;\n\t\/\/ starting coordinates\n\tthis.sx = sx;\n\tthis.sy = sy;\n\t\/\/ target coordinates\n\tthis.tx = tx;\n\tthis.ty = ty;\n\t\/\/ distance from starting point to target\n\tthis.distanceToTarget = calculateDistance( sx, sy, tx, ty );\n\tthis.distanceTraveled = 0;\n\t\/\/ track the past coordinates of each firework to create a trail effect, increase the coordinate count to create more prominent trails\n\tthis.coordinates = [];\n\tthis.coordinateCount = 3;\n\t\/\/ populate initial coordinate collection with the current coordinates\n\twhile( this.coordinateCount-- ) {\n\t\tthis.coordinates.push( [ this.x, this.y ] );\n\t}\n\tthis.angle = Math.atan2( ty - sy, tx - sx );\n\tthis.speed = 2;\n\tthis.acceleration = 1.05;\n\tthis.brightness = random( 50, 70 );\n\t\/\/ circle target indicator radius\n\tthis.targetRadius = 1;\n}\n\n\/\/ update firework\nFirework.prototype.update = function( index ) {\n\t\/\/ remove last item in coordinates array\n\tthis.coordinates.pop();\n\t\/\/ add current coordinates to the start of the array\n\tthis.coordinates.unshift( [ this.x, this.y ] );\n\t\n\t\/\/ cycle the circle target indicator radius\n\tif( this.targetRadius < 8 ) {\n\t\tthis.targetRadius += 0.3;\n\t} else {\n\t\tthis.targetRadius = 1;\n\t}\n\t\n\t\/\/ speed up the firework\n\tthis.speed *= this.acceleration;\n\t\n\t\/\/ get the current velocities based on angle and speed\n\tvar vx = Math.cos( this.angle ) * this.speed,\n\t\t\tvy = Math.sin( this.angle ) * this.speed;\n\t\/\/ how far will the firework have traveled with velocities applied?\n\tthis.distanceTraveled = calculateDistance( this.sx, this.sy, this.x + vx, this.y + vy );\n\t\n\t\/\/ if the distance traveled, including velocities, is greater than the initial distance to the target, then the target has been reached\n\tif( this.distanceTraveled >= this.distanceToTarget ) {\n\t\tcreateParticles( this.tx, this.ty );\n\t\t\/\/ remove the firework, use the index passed into the update function to determine which to remove\n\t\tfireworks.splice( index, 1 );\n\t} else {\n\t\t\/\/ target not reached, keep traveling\n\t\tthis.x += vx;\n\t\tthis.y += vy;\n\t}\n}\n\n\/\/ draw firework\nFirework.prototype.draw = function() {\n\tctx.beginPath();\n\t\/\/ move to the last tracked coordinate in the set, then draw a line to the current x and y\n\tctx.moveTo( this.coordinates[ this.coordinates.length - 1][ 0 ], this.coordinates[ this.coordinates.length - 1][ 1 ] );\n\tctx.lineTo( this.x, this.y );\n\tctx.strokeStyle = 'hsl(' + hue + ', 100%, ' + this.brightness + '%)';\n\tctx.stroke();\n\t\n\tctx.beginPath();\n\t\/\/ draw the target for this firework with a pulsing circle\n\tctx.arc( this.tx, this.ty, this.targetRadius, 0, Math.PI * 2 );\n\tctx.stroke();\n}\n\n\/\/ create particle\nfunction Particle( x, y ) {\n\tthis.x = x;\n\tthis.y = y;\n\t\/\/ track the past coordinates of each particle to create a trail effect, increase the coordinate count to create more prominent trails\n\tthis.coordinates = [];\n\tthis.coordinateCount = 5;\n\twhile( this.coordinateCount-- ) {\n\t\tthis.coordinates.push( [ this.x, this.y ] );\n\t}\n\t\/\/ set a random angle in all possible directions, in radians\n\tthis.angle = random( 0, Math.PI * 2 );\n\tthis.speed = random( 1, 10 );\n\t\/\/ friction will slow the particle down\n\tthis.friction = 0.95;\n\t\/\/ gravity will be applied and pull the particle down\n\tthis.gravity = 1;\n\t\/\/ set the hue to a random number +-50 of the overall hue variable\n\tthis.hue = random( hue - 50, hue + 50 );\n\tthis.brightness = random( 50, 80 );\n\tthis.alpha = 1;\n\t\/\/ set how fast the particle fades out\n\tthis.decay = random( 0.015, 0.03 );\n}\n\n\/\/ update particle\nParticle.prototype.update = function( index ) {\n\t\/\/ remove last item in coordinates array\n\tthis.coordinates.pop();\n\t\/\/ add current coordinates to the start of the array\n\tthis.coordinates.unshift( [ this.x, this.y ] );\n\t\/\/ slow down the particle\n\tthis.speed *= this.friction;\n\t\/\/ apply velocity\n\tthis.x += Math.cos( this.angle ) * this.speed;\n\tthis.y += Math.sin( this.angle ) * this.speed + this.gravity;\n\t\/\/ fade out the particle\n\tthis.alpha -= this.decay;\n\t\n\t\/\/ remove the particle once the alpha is low enough, based on the passed in index\n\tif( this.alpha <= this.decay ) {\n\t\tparticles.splice( index, 1 );\n\t}\n}\n\n\/\/ draw particle\nParticle.prototype.draw = function() {\n\tctx. beginPath();\n\t\/\/ move to the last tracked coordinates in the set, then draw a line to the current x and y\n\tctx.moveTo( this.coordinates[ this.coordinates.length - 1 ][ 0 ], this.coordinates[ this.coordinates.length - 1 ][ 1 ] );\n\tctx.lineTo( this.x, this.y );\n\tctx.strokeStyle = 'hsla(' + this.hue + ', 100%, ' + this.brightness + '%, ' + this.alpha + ')';\n\tctx.stroke();\n}\n\n\/\/ create particle group\/explosion\nfunction createParticles( x, y ) {\n\t\/\/ increase the particle count for a bigger explosion, beware of the canvas performance hit with the increased particles though\n\tvar particleCount = 30;\n\twhile( particleCount-- ) {\n\t\tparticles.push( new Particle( x, y ) );\n\t}\n}\n\n\/\/ main demo loop\nfunction loop() {\n\t\/\/ this function will run endlessly with requestAnimationFrame\n\trequestAnimFrame( loop );\n\t\n\t\/\/ increase the hue to get different colored fireworks over time\n\t\/\/hue += 0.5;\n  \n  \/\/ create random color\n  hue= random(0, 360 );\n\t\n\t\/\/ normally, clearRect() would be used to clear the canvas\n\t\/\/ we want to create a trailing effect though\n\t\/\/ setting the composite operation to destination-out will allow us to clear the canvas at a specific opacity, rather than wiping it entirely\n\tctx.globalCompositeOperation = 'destination-out';\n\t\/\/ decrease the alpha property to create more prominent trails\n\tctx.fillStyle = 'rgba(0, 0, 0, 0.5)';\n\tctx.fillRect( 0, 0, cw, ch );\n\t\/\/ change the composite operation back to our main mode\n\t\/\/ lighter creates bright highlight points as the fireworks and particles overlap each other\n\tctx.globalCompositeOperation = 'lighter';\n\t\n\t\/\/ loop over each firework, draw it, update it\n\tvar i = fireworks.length;\n\twhile( i-- ) {\n\t\tfireworks[ i ].draw();\n\t\tfireworks[ i ].update( i );\n\t}\n\t\n\t\/\/ loop over each particle, draw it, update it\n\tvar i = particles.length;\n\twhile( i-- ) {\n\t\tparticles[ i ].draw();\n\t\tparticles[ i ].update( i );\n\t}\n\t\n\t\/\/ launch fireworks automatically to random coordinates, when the mouse isn't down\n\tif( timerTick >= timerTotal ) {\n\t\tif( !mousedown ) {\n\t\t\t\/\/ start the firework at the bottom middle of the screen, then set the random target coordinates, the random y coordinates will be set within the range of the top half of the screen\n\t\t\tfireworks.push( new Firework( cw \/ 2, ch, random( 0, cw ), random( 0, ch \/ 2 ) ) );\n\t\t\ttimerTick = 0;\n\t\t}\n\t} else {\n\t\ttimerTick++;\n\t}\n\t\n\t\/\/ limit the rate at which fireworks get launched when mouse is down\n\tif( limiterTick >= limiterTotal ) {\n\t\tif( mousedown ) {\n\t\t\t\/\/ start the firework at the bottom middle of the screen, then set the current mouse coordinates as the target\n\t\t\tfireworks.push( new Firework( cw \/ 2, ch, mx, my ) );\n\t\t\tlimiterTick = 0;\n\t\t}\n\t} else {\n\t\tlimiterTick++;\n\t}\n}\n\n\/\/ mouse event bindings\n\/\/ update the mouse coordinates on mousemove\ncanvas.addEventListener( 'mousemove', function( e ) {\n\tmx = e.pageX - canvas.offsetLeft;\n\tmy = e.pageY - canvas.offsetTop;\n});\n\n\/\/ toggle mousedown state and prevent canvas from being selected\ncanvas.addEventListener( 'mousedown', function( e ) {\n\te.preventDefault();\n\tmousedown = true;\n});\n\ncanvas.addEventListener( 'mouseup', function( e ) {\n\te.preventDefault();\n\tmousedown = false;\n});\n\n\/\/ once the window loads, we are ready for some fireworks!\nwindow.onload = loop;\n\n\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Wann? 31.12.2023 ab 19:00 bis &#8230; Direkt zur Anmeldung Wo? Pavillon Murg-Auen-Park Vollbildanzeige Mit der BahnBis Hauptbahnhof Frauenfeld \/ von da aus 10 Minuten Fussweg Mit dem BusBis Haltestelle Frauenfeld, Jugendmusikschule \/ von da aus 5 Minuten Fussweg Mit dem Auto Achtung beim Murg Auen Park stehen keine Parkpl\u00e4tze zur Verf\u00fcgung und gleichzeitig ist noch &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/halti40.ch\/\" class=\"more-link\">Mehr <span class=\"screen-reader-text\">\u00fcber &#8222;&#8220; <\/span>Lesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-10","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/halti40.ch\/index.php?rest_route=\/wp\/v2\/pages\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/halti40.ch\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/halti40.ch\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/halti40.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/halti40.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10"}],"version-history":[{"count":96,"href":"https:\/\/halti40.ch\/index.php?rest_route=\/wp\/v2\/pages\/10\/revisions"}],"predecessor-version":[{"id":231,"href":"https:\/\/halti40.ch\/index.php?rest_route=\/wp\/v2\/pages\/10\/revisions\/231"}],"wp:attachment":[{"href":"https:\/\/halti40.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}