{"id":730,"date":"2025-07-09T02:39:02","date_gmt":"2025-07-09T00:39:02","guid":{"rendered":"https:\/\/cyclocamp.org\/?page_id=730"},"modified":"2025-09-29T23:04:05","modified_gmt":"2025-09-29T21:04:05","slug":"730-2","status":"publish","type":"page","link":"https:\/\/cyclocamp.org\/?page_id=730","title":{"rendered":""},"content":{"rendered":"\n<div class=\"wp-block-group .wp-block-group {  justify-content: center !important; text-align: center; } is-content-justification-center is-layout-flex wp-container-core-group-is-layout-b02886af wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><a class=\"maxbutton-3 maxbutton maxbutton-day-1\" href=\"https:\/\/cyclocamp.org\/?page_id=21\"><span class='mb-text'>DAY 1<\/span><\/a>\n\n<a class=\"maxbutton-3 maxbutton maxbutton-day-1\" href=\"https:\/\/cyclocamp.org\/?page_id=116\"><span class='mb-text'>DAY 2<\/span><\/a>\n\n<a class=\"maxbutton-3 maxbutton maxbutton-day-1\" href=\"https:\/\/cyclocamp.org\/?page_id=118\"><span class='mb-text'>DAY 3<\/span><\/a>\n\n<a class=\"maxbutton-3 maxbutton maxbutton-day-1\" href=\"https:\/\/cyclocamp.org\/?page_id=120\"><span class='mb-text'>DAY 4<\/span><\/a>\n\n<a class=\"maxbutton-3 maxbutton maxbutton-day-1\" href=\"https:\/\/cyclocamp.org\/?page_id=687\"><span class='mb-text'>DAY 5<\/span><\/a>\n\n<a class=\"maxbutton-4 maxbutton maxbutton-day-on\" href=\"javascript:void(0);\"><span class='mb-text'>OFF<\/span><\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:0px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/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 has-text-align-left\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#000000\" class=\"has-inline-color\">23\/9<\/mark> Tuesday<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#000000\" class=\"has-inline-color\">08:00-10:00<\/mark><\/h3>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-custom-color-11-color\">BREAKFAST + MORNING CIRCLE<\/mark><\/h3>\n\n\n\n<p class=\"has-text-align-center\"><strong><strong><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-custom-color-6-color\">Location: Bicpop<\/mark><\/strong><\/strong><\/strong><\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\">10:00-12:00<\/h3>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-custom-color-11-color\">TRIP TO VRGIN MOST<\/mark><\/h3>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\">12:00-15:00<\/h3>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-custom-color-11-color\">BIKE REPAIR (IN VRGIN MOST)<\/mark><\/h3>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\">15:00-17:00<\/h3>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-custom-color-11-color\">LUNCH AND REST (IN VRGIN MOST)<\/mark><\/h3>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\">17:00-20:00<\/h3>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-custom-color-11-color\">BIKE REPAIR IN VRGIN MOST<\/mark><\/h3>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\">20:00-22:00<\/h3>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-custom-color-11-color\">DINNER AND REST IN VRGIN MOST<\/mark><\/h3>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<div id=\"sketch-holder\" style=\"width:100%; overflow:hidden;\"><\/div>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/p5.js\/1.9.0\/p5.min.js\"><\/script>\n\n<script>\n  let wheels = [];\n  let numCols = 6;\n  let numRows = 2; \n  let spacingX, spacingY;\n\n  function setup() {\n    let canvas = createCanvas(windowWidth, 300);\n    canvas.parent('sketch-holder');\n    \n\n    spacingX = width \/ numCols;\n    spacingY = height \/ numRows;\n\n    wheels = []; \n\n    for (let i = 0; i < numCols; i++) {\n      for (let j = 0; j < numRows; j++) {\n        let x = i * spacingX + spacingX \/ 2;\n        let y = j * spacingY + spacingY \/ 2;\n        wheels.push(new Wheel(x, y));\n      }\n    }\n    textFont('monospace');\n    textAlign(CENTER, TOP);\n  }\n\n  function draw() {\n    background(10);\n\n    \/\/ Handle collisions\n    for (let i = 0; i < wheels.length; i++) {\n      for (let j = i + 1; j < wheels.length; j++) {\n        wheels[i].checkCollision(wheels[j]);\n      }\n    }\n\n    for (let wheel of wheels) {\n      wheel.update();\n      wheel.display();\n    }\n\n    \/\/ Draw title on top\n    fill(57, 255, 20);\n    noStroke();\n    textSize(36);\n    text(\"\", width \/ 2, 10);\n  }\n\n  class Wheel {\n    constructor(x, y) {\n      this.x = x;\n      this.y = y;\n      this.angle = random(360);\n      this.radius = 40 + random(20, 40); \n      this.vx = random(-1, 1);\n      this.vy = random(-1, 1);\n    }\n\n    update() {\n      this.x += this.vx;\n      this.y += this.vy;\n      this.angle += 1;\n\n      \/\/ Bounce off walls\n      if (this.x < this.radius || this.x > width - this.radius) this.vx *= -1;\n      if (this.y < this.radius || this.y > height - this.radius) this.vy *= -1;\n    }\n\n    checkCollision(other) {\n      let dx = this.x - other.x;\n      let dy = this.y - other.y;\n      let distBetween = sqrt(dx * dx + dy * dy);\n      let minDist = this.radius + other.radius;\n\n      if (distBetween < minDist) {\n        \/\/ Basic repulsion\n        let angle = atan2(dy, dx);\n        let overlap = minDist - distBetween;\n\n        let ax = cos(angle) * overlap \/ 2;\n        let ay = sin(angle) * overlap \/ 2;\n\n        this.x += ax;\n        this.y += ay;\n        other.x -= ax;\n        other.y -= ay;\n\n        \/\/ Swap velocities\n        let tempVx = this.vx;\n        let tempVy = this.vy;\n        this.vx = other.vx;\n        this.vy = other.vy;\n        other.vx = tempVx;\n        other.vy = tempVy;\n      }\n    }\n\n    display() {\n      push();\n      translate(this.x, this.y);\n      rotate(this.angle);\n\n      let d = this.radius * 2;\n\n      if (dist(mouseX, mouseY, this.x, this.y) < this.radius) {\n        drawPixelWheel(d);\n      } else {\n        drawBikeWheel(d);\n      }\n      pop();\n    }\n  }\n\n  function drawBikeWheel(d) {\n    stroke(255);\n    strokeWeight(2);\n    noFill();\n    ellipse(0, 0, d);\n\n    for (let i = 0; i < 6; i++) {\n      let a = i * 60;\n      line(0, 0, (d \/ 2) * cos(a), (d \/ 2) * sin(a));\n    }\n  }\n\n  function drawPixelWheel(d) {\n    let step = 4;\n    for (let x = -d \/ 2; x < d \/ 2; x += step) {\n      for (let y = -d \/ 2; y < d \/ 2; y += step) {\n        if (dist(0, 0, x, y) < d \/ 2) {\n          let col = (x + y) % 2 == 0 ? color(255, 100, 0) : color(255, 16, 240);\n          fill(col);\n          noStroke();\n          rect(x, y, step, step);\n        }\n      }\n    }\n  }\n\n  function windowResized() {\n    resizeCanvas(windowWidth, 300);\n    spacingX = width \/ numCols;\n    spacingY = height \/ numRows;\n    wheels = [];\n    for (let i = 0; i < numCols; i++) {\n      for (let j = 0; j < numRows; j++) {\n        let x = i * spacingX + spacingX \/ 2;\n        let y = j * spacingY + spacingY \/ 2;\n        wheels.push(new Wheel(x, y));\n      }\n    }\n  }\n<\/script>","protected":false},"excerpt":{"rendered":"<p>23\/9 Tuesday 08:00-10:00 Location: Bicpop 10:00-12:00 TRIP TO VRGIN MOST 12:00-15:00 BIKE REPAIR (IN VRGIN MOST) 15:00-17:00 LUNCH AND REST (IN VRGIN MOST) 17:00-20:00 BIKE REPAIR IN VRGIN MOST 20:00-22:00 DINNER AND REST IN VRGIN MOST<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-730","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cyclocamp.org\/index.php?rest_route=\/wp\/v2\/pages\/730","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cyclocamp.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cyclocamp.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cyclocamp.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/cyclocamp.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=730"}],"version-history":[{"count":14,"href":"https:\/\/cyclocamp.org\/index.php?rest_route=\/wp\/v2\/pages\/730\/revisions"}],"predecessor-version":[{"id":1102,"href":"https:\/\/cyclocamp.org\/index.php?rest_route=\/wp\/v2\/pages\/730\/revisions\/1102"}],"wp:attachment":[{"href":"https:\/\/cyclocamp.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}