{"id":922,"date":"2025-08-10T10:48:42","date_gmt":"2025-08-10T10:48:42","guid":{"rendered":"https:\/\/llumdigital.com\/?page_id=922"},"modified":"2025-08-10T10:52:50","modified_gmt":"2025-08-10T10:52:50","slug":"922-2","status":"publish","type":"page","link":"https:\/\/llumdigital.com\/en\/922-2\/","title":{"rendered":""},"content":{"rendered":"<p>[et_pb_section fb_built=\u00bb1&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb0px||0px||true|false\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_row _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb width=\u00bb100%\u00bb max_width=\u00bb100%\u00bb custom_padding=\u00bb0px||0px||true|false\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_code _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb hover_enabled=\u00bb0&#8243; global_colors_info=\u00bb{}\u00bb sticky_enabled=\u00bb0&#8243;]<!-- Beehive Construction Simulation \u2014 Divi Code Module --><!-- [et_pb_line_break_holder] --><\/p>\n<div id=\"beehive-sim\"><!-- [et_pb_line_break_holder] -->  <\/p>\n<div class=\"bh-header\"><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"bh-title\">\ud83d\udc1d Beehive Construction<\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"bh-pill\"><!-- [et_pb_line_break_holder] -->      <span class=\"bh-label\">Colony Size<\/span><!-- [et_pb_line_break_holder] -->      <input id=\"bh-colony\" type=\"range\" min=\"10\" max=\"600\" value=\"180\" \/><!-- [et_pb_line_break_holder] -->      <span id=\"bh-colonyVal\" class=\"bh-value\">180<\/span><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"bh-pill\"><!-- [et_pb_line_break_holder] -->      <span class=\"bh-label\">Resources<\/span><!-- [et_pb_line_break_holder] -->      <input id=\"bh-resources\" type=\"range\" min=\"0\" max=\"100\" value=\"60\" \/><!-- [et_pb_line_break_holder] -->      <span id=\"bh-resVal\" class=\"bh-value\">0.60<\/span><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"bh-pill\"><!-- [et_pb_line_break_holder] -->      <span class=\"bh-label\">Speed<\/span><!-- [et_pb_line_break_holder] -->      <input id=\"bh-speed\" type=\"range\" min=\"0.5\" max=\"2.5\" step=\"0.1\" value=\"1.0\" \/><!-- [et_pb_line_break_holder] -->      <span id=\"bh-speedVal\" class=\"bh-value\">1.0\u00d7<\/span><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"bh-legend\"><!-- [et_pb_line_break_holder] -->      <span class=\"bh-chip\"><span class=\"bh-dot cell\"><\/span> new cells<\/span><!-- [et_pb_line_break_holder] -->      <span class=\"bh-chip\"><span class=\"bh-dot honey\"><\/span> honey fill<\/span><!-- [et_pb_line_break_holder] -->      <span class=\"bh-chip\"><span class=\"bh-dot path\"><\/span> paths<\/span><!-- [et_pb_line_break_holder] -->      <button id=\"bh-reset\" class=\"bh-btn\">Reset<\/button><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] -->  <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  <canvas id=\"bh-canvas\"><\/canvas><!-- [et_pb_line_break_holder] -->  <\/p>\n<div class=\"bh-footer\">Move the sliders to change colony size and resource availability.<\/div>\n<p><!-- [et_pb_line_break_holder] --><\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><\/p>\n<style><!-- [et_pb_line_break_holder] -->#beehive-sim {<!-- [et_pb_line_break_holder] -->  --bg: #0b0f14;<!-- [et_pb_line_break_holder] -->  --text: #e6ecf2;<!-- [et_pb_line_break_holder] -->  --muted: #9fb3c8;<!-- [et_pb_line_break_holder] -->  --accent: #ffcd00;<!-- [et_pb_line_break_holder] -->  --accent2: #69d1ff;<!-- [et_pb_line_break_holder] -->  --height: 74vh;<!-- [et_pb_line_break_holder] -->  position: relative;<!-- [et_pb_line_break_holder] -->  background: radial-gradient(1200px 800px at 70% -10%, #122033 0%, var(--bg) 60%);<!-- [et_pb_line_break_holder] -->  color: var(--text);<!-- [et_pb_line_break_holder] -->  border-radius: 12px;<!-- [et_pb_line_break_holder] -->  overflow: hidden;<!-- [et_pb_line_break_holder] -->  min-height: var(--height);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#beehive-sim * { box-sizing: border-box; font-family: inherit; }<!-- [et_pb_line_break_holder] -->#beehive-sim .bh-header {<!-- [et_pb_line_break_holder] -->  position: absolute; top: 0; left: 0; right: 0; z-index: 10;<!-- [et_pb_line_break_holder] -->  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;<!-- [et_pb_line_break_holder] -->  padding: 8px 10px;<!-- [et_pb_line_break_holder] -->  background: rgba(18,25,36,0.84);<!-- [et_pb_line_break_holder] -->  backdrop-filter: blur(8px);<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid rgba(255,255,255,0.06);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#beehive-sim .bh-title { font-weight: bold; }<!-- [et_pb_line_break_holder] -->#beehive-sim .bh-pill {<!-- [et_pb_line_break_holder] -->  display: flex; align-items: center; gap: 6px;<!-- [et_pb_line_break_holder] -->  background: #0e1520; border: 1px solid rgba(255,255,255,.06);<!-- [et_pb_line_break_holder] -->  padding: 4px 6px; border-radius: 999px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#beehive-sim .bh-label { font-size: 12px; color: var(--muted); }<!-- [et_pb_line_break_holder] -->#beehive-sim input[type=range] { width: 120px; accent-color: var(--accent); }<!-- [et_pb_line_break_holder] -->#beehive-sim .bh-value { min-width: 40px; text-align: right; }<!-- [et_pb_line_break_holder] -->#beehive-sim .bh-legend { margin-left: auto; display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 12px; }<!-- [et_pb_line_break_holder] -->#beehive-sim .bh-chip { display: flex; align-items: center; gap: 4px; }<!-- [et_pb_line_break_holder] -->#beehive-sim .bh-dot { width: 10px; height: 10px; border-radius: 50%; }<!-- [et_pb_line_break_holder] -->#beehive-sim .bh-dot.honey { background: var(--accent); }<!-- [et_pb_line_break_holder] -->#beehive-sim .bh-dot.path { background: var(--accent2); }<!-- [et_pb_line_break_holder] -->#beehive-sim .bh-dot.cell { background: #88a0b8; }<!-- [et_pb_line_break_holder] -->#beehive-sim .bh-btn { background: #0f1926; color: #c9d6e2; border: 1px solid rgba(255,255,255,.08); padding: 4px 8px; border-radius: 6px; cursor: pointer; }<!-- [et_pb_line_break_holder] -->#beehive-sim #bh-canvas {<!-- [et_pb_line_break_holder] -->  position: absolute; top: 50px; left: 0; right: 0; bottom: 0;<!-- [et_pb_line_break_holder] -->  width: 100%; height: calc(100% - 50px);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#beehive-sim .bh-footer {<!-- [et_pb_line_break_holder] -->  position: absolute; right: 8px; bottom: 8px; font-size: 12px; color: #7e95ab;<!-- [et_pb_line_break_holder] -->  background: rgba(0,0,0,0.25); padding: 4px 8px; border-radius: 8px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  const root = document.getElementById('beehive-sim');<!-- [et_pb_line_break_holder] -->  const canvas = root.querySelector('#bh-canvas');<!-- [et_pb_line_break_holder] -->  const ctx = canvas.getContext('2d');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  const colonySlider = root.querySelector('#bh-colony');<!-- [et_pb_line_break_holder] -->  const colonyVal = root.querySelector('#bh-colonyVal');<!-- [et_pb_line_break_holder] -->  const resSlider = root.querySelector('#bh-resources');<!-- [et_pb_line_break_holder] -->  const resVal = root.querySelector('#bh-resVal');<!-- [et_pb_line_break_holder] -->  const speedSlider = root.querySelector('#bh-speed');<!-- [et_pb_line_break_holder] -->  const speedVal = root.querySelector('#bh-speedVal');<!-- [et_pb_line_break_holder] -->  const resetBtn = root.querySelector('#bh-reset');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  const DPR = Math.min(window.devicePixelRatio || 1, 2);<!-- [et_pb_line_break_holder] -->  function fit() {<!-- [et_pb_line_break_holder] -->    const rect = canvas.getBoundingClientRect();<!-- [et_pb_line_break_holder] -->    canvas.width = rect.width * DPR;<!-- [et_pb_line_break_holder] -->    canvas.height = rect.height * DPR;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  new ResizeObserver(fit).observe(canvas); fit();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  let SIM_SPEED = +speedSlider.value;<!-- [et_pb_line_break_holder] -->  let COLONY_SIZE = +colonySlider.value;<!-- [et_pb_line_break_holder] -->  let RESOURCE_LEVEL = +resSlider.value \/ 100;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  colonySlider.oninput = () => { COLONY_SIZE = +colonySlider.value; colonyVal.textContent = COLONY_SIZE; adjustBees(); };<!-- [et_pb_line_break_holder] -->  resSlider.oninput = () => { RESOURCE_LEVEL = +resSlider.value \/ 100; resVal.textContent = RESOURCE_LEVEL.toFixed(2); };<!-- [et_pb_line_break_holder] -->  speedSlider.oninput = () => { SIM_SPEED = +speedSlider.value; speedVal.textContent = SIM_SPEED.toFixed(1) + '\u00d7'; };<!-- [et_pb_line_break_holder] -->  resetBtn.onclick = () => init(true);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  const HEX_R = 18, HEX_W = Math.sqrt(3) * HEX_R, HEX_H = 2 * HEX_R, HEX_V = 1.5 * HEX_R;<!-- [et_pb_line_break_holder] -->  function axialToPixel(q, r, cx, cy) {<!-- [et_pb_line_break_holder] -->    return { x: cx + HEX_W * (q + r\/2), y: cy + HEX_V * r };<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function drawHex(x, y, r, fill, stroke, honey) {<!-- [et_pb_line_break_holder] -->    const a60 = Math.PI \/ 3;<!-- [et_pb_line_break_holder] -->    ctx.beginPath();<!-- [et_pb_line_break_holder] -->    for (let i = 0; i < 6; i++) {<!-- [et_pb_line_break_holder] -->      const a = a60 * i - Math.PI \/ 6;<!-- [et_pb_line_break_holder] -->      const px = x + r * Math.cos(a), py = y + r * Math.sin(a);<!-- [et_pb_line_break_holder] -->      if (i === 0) ctx.moveTo(px, py); else ctx.lineTo(px, py);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    ctx.closePath();<!-- [et_pb_line_break_holder] -->    if (fill) { ctx.fillStyle = fill; ctx.fill(); }<!-- [et_pb_line_break_holder] -->    if (honey > 0) {<!-- [et_pb_line_break_holder] -->      ctx.save(); ctx.clip();<!-- [et_pb_line_break_holder] -->      const h = r * 1.6 * honey;<!-- [et_pb_line_break_holder] -->      const g = ctx.createLinearGradient(0, y + r, 0, y - r);<!-- [et_pb_line_break_holder] -->      g.addColorStop(0, 'rgba(255,205,0,0.85)');<!-- [et_pb_line_break_holder] -->      g.addColorStop(1, 'rgba(255,180,0,0.25)');<!-- [et_pb_line_break_holder] -->      ctx.fillStyle = g;<!-- [et_pb_line_break_holder] -->      ctx.fillRect(x - r, y + r - h, r * 2, h);<!-- [et_pb_line_break_holder] -->      ctx.restore();<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    if (stroke) { ctx.strokeStyle = stroke; ctx.stroke(); }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  const state = { cells: new Map(), buildFrontier: [], bees: [], nectarSpots: [], center: {x:0,y:0} };<!-- [et_pb_line_break_holder] -->  const key = (q,r) => q+','+r;<!-- [et_pb_line_break_holder] -->  const neighbors = (q,r) => [[1,0],[1,-1],[0,-1],[-1,0],[-1,1],[0,1]].map(([dq,dr])=>[q+dq,r+dr]);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  function seedGrid() {<!-- [et_pb_line_break_holder] -->    state.cells.clear(); state.buildFrontier.length=0;<!-- [et_pb_line_break_holder] -->    state.cells.set(key(0,0), {q:0,r:0,built:1,honey:0});<!-- [et_pb_line_break_holder] -->    state.buildFrontier.push([0,0]);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function placeNectarSpots() {<!-- [et_pb_line_break_holder] -->    const spots = [], w=canvas.width,h=canvas.height;<!-- [et_pb_line_break_holder] -->    for (let i=0;i<6;i++) {<!-- [et_pb_line_break_holder] -->      const ang=(i\/6)*Math.PI*2+Math.random()*0.6;<!-- [et_pb_line_break_holder] -->      const rad=Math.min(w,h)*0.32+Math.random()*Math.min(w,h)*0.12;<!-- [et_pb_line_break_holder] -->      spots.push({x:w\/2+Math.cos(ang)*rad, y:h\/2+Math.sin(ang)*rad, richness:0.5+Math.random()*0.5});<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    state.nectarSpots=spots;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function init(clear) {<!-- [et_pb_line_break_holder] -->    state.center.x = canvas.width\/2; state.center.y = canvas.height\/2;<!-- [et_pb_line_break_holder] -->    seedGrid(); placeNectarSpots(); state.bees = [];<!-- [et_pb_line_break_holder] -->    if (clear) ctx.clearRect(0,0,canvas.width,canvas.height);<!-- [et_pb_line_break_holder] -->    adjustBees();<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function adjustBees() {<!-- [et_pb_line_break_holder] -->    while (state.bees.length < COLONY_SIZE) state.bees.push(makeBee());<!-- [et_pb_line_break_holder] -->    while (state.bees.length > COLONY_SIZE) state.bees.pop();<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function makeBee() {<!-- [et_pb_line_break_holder] -->    return { x: state.center.x, y: state.center.y, vx:0, vy:0, speed:0.6+Math.random()*0.6,<!-- [et_pb_line_break_holder] -->      mode: Math.random()<0.5?'forage':'build', target: pickTarget('nectar'), carrying:0, jitter:Math.random()*Math.PI*2 };<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function pickTarget(type) {<!-- [et_pb_line_break_holder] -->    if (type==='nectar' && state.nectarSpots.length) return state.nectarSpots[(Math.random()*state.nectarSpots.length)|0];<!-- [et_pb_line_break_holder] -->    if (state.buildFrontier.length) {<!-- [et_pb_line_break_holder] -->      const [q,r]=state.buildFrontier[(Math.random()*state.buildFrontier.length)|0];<!-- [et_pb_line_break_holder] -->      return axialToPixel(q,r,state.center.x,state.center.y);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    return {x:state.center.x,y:state.center.y};<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function ensureCell(q,r) {<!-- [et_pb_line_break_holder] -->    if (!state.cells.has(key(q,r))) {<!-- [et_pb_line_break_holder] -->      state.cells.set(key(q,r),{q,r,built:0,honey:0});<!-- [et_pb_line_break_holder] -->      state.buildFrontier.push([q,r]);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function buildStep(dt) {<!-- [et_pb_line_break_holder] -->    const power=(0.15+RESOURCE_LEVEL*0.85)*(COLONY_SIZE\/300);<!-- [et_pb_line_break_holder] -->    for (let i=0;i<Math.min(6,state.buildFrontier.length);i++) {<!-- [et_pb_line_break_holder] -->      const idx=(Math.random()*state.buildFrontier.length)|0;<!-- [et_pb_line_break_holder] -->      const [q,r]=state.buildFrontier[idx];<!-- [et_pb_line_break_holder] -->      const cell=state.cells.get(key(q,r));<!-- [et_pb_line_break_holder] -->      cell.built=Math.min(1,cell.built+power*dt);<!-- [et_pb_line_break_holder] -->      if (cell.built>=1 && Math.random()<0.2) {<!-- [et_pb_line_break_holder] -->        const [nq,nr]=neighbors(q,r)[(Math.random()*6)|0]; ensureCell(nq,nr);<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function honeyStep(dt) {<!-- [et_pb_line_break_holder] -->    const inflow=RESOURCE_LEVEL*(state.bees.length\/400);<!-- [et_pb_line_break_holder] -->    const arr=[...state.cells.values()].filter(c=>c.built>=1 && c.honey<1);<!-- [et_pb_line_break_holder] -->    if (!arr.length) return;<!-- [et_pb_line_break_holder] -->    for (let k=0;k<Math.max(1,Math.floor(inflow*60));k++) {<!-- [et_pb_line_break_holder] -->      const cell=arr[(Math.random()*arr.length)|0];<!-- [et_pb_line_break_holder] -->      cell.honey=Math.min(1,cell.honey+inflow*dt*0.5);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function stepBees(dt) {<!-- [et_pb_line_break_holder] -->    for (const b of state.bees) {<!-- [et_pb_line_break_holder] -->      b.jitter+=dt*2;<!-- [et_pb_line_break_holder] -->      const tx=b.target.x,ty=b.target.y,dx=tx-b.x,dy=ty-b.y;<!-- [et_pb_line_break_holder] -->      const dist=Math.hypot(dx,dy)+1e-6,dirx=dx\/dist,diry=dy\/dist;<!-- [et_pb_line_break_holder] -->      const speed=b.speed*60*SIM_SPEED;<!-- [et_pb_line_break_holder] -->      ctx.save(); ctx.globalAlpha=0.06; ctx.strokeStyle='rgba(105,209,255,0.9)';<!-- [et_pb_line_break_holder] -->      ctx.beginPath(); ctx.moveTo(b.x,b.y); ctx.lineTo(b.x+dirx*6,b.y+diry*6); ctx.stroke(); ctx.restore();<!-- [et_pb_line_break_holder] -->      b.vx=b.vx*0.85+dirx*speed*0.15; b.vy=b.vy*0.85+diry*speed*0.15;<!-- [et_pb_line_break_holder] -->      b.x+=b.vx*dt; b.y+=b.vy*dt;<!-- [et_pb_line_break_holder] -->      if (dist<10) { b.mode=(b.mode==='forage')?'build':'forage'; b.target=pickTarget(b.mode==='forage'?'nectar':'cell'); }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function renderGrid() {<!-- [et_pb_line_break_holder] -->    ctx.fillStyle='rgba(11,15,20,0.12)'; ctx.fillRect(0,0,canvas.width,canvas.height);<!-- [et_pb_line_break_holder] -->    for (const c of state.cells.values()) {<!-- [et_pb_line_break_holder] -->      const p=axialToPixel(c.q,c.r,state.center.x,state.center.y);<!-- [et_pb_line_break_holder] -->      drawHex(p.x,p.y,HEX_R*DPR,`rgba(200,200,220,${0.15+c.built*0.1})`,'rgba(136,160,184,0.35)',c.honey);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function renderNectarSpots() {<!-- [et_pb_line_break_holder] -->    for (const s of state.nectarSpots) {<!-- [et_pb_line_break_holder] -->      ctx.beginPath(); ctx.arc(s.x,s.y,8*DPR,0,Math.PI*2);<!-- [et_pb_line_break_holder] -->      const g=ctx.createRadialGradient(s.x,s.y,0,s.x,s.y,16*DPR);<!-- [et_pb_line_break_holder] -->      g.addColorStop(0,'rgba(120,230,255,0.9)'); g.addColorStop(1,'rgba(120,230,255,0)');<!-- [et_pb_line_break_holder] -->      ctx.fillStyle=g; ctx.fill();<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function renderBees() {<!-- [et_pb_line_break_holder] -->    for (const b of state.bees) {<!-- [et_pb_line_break_holder] -->      ctx.beginPath(); ctx.fillStyle='rgba(255,220,60,0.95)'; ctx.arc(b.x,b.y,1.2*DPR,0,Math.PI*2); ctx.fill();<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  let last=performance.now();<!-- [et_pb_line_break_holder] -->  function loop(now) {<!-- [et_pb_line_break_holder] -->    const dt=Math.min(0.05,(now-last)\/1000)*SIM_SPEED; last=now;<!-- [et_pb_line_break_holder] -->    buildStep(dt); honeyStep(dt);<!-- [et_pb_line_break_holder] -->    renderGrid(); renderNectarSpots(); stepBees(dt); renderBees();<!-- [et_pb_line_break_holder] -->    requestAnimationFrame(loop);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  init(true); requestAnimationFrame(loop);<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script><!-- [et_pb_line_break_holder] -->[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-922","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/llumdigital.com\/en\/wp-json\/wp\/v2\/pages\/922","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/llumdigital.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/llumdigital.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/llumdigital.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/llumdigital.com\/en\/wp-json\/wp\/v2\/comments?post=922"}],"version-history":[{"count":0,"href":"https:\/\/llumdigital.com\/en\/wp-json\/wp\/v2\/pages\/922\/revisions"}],"wp:attachment":[{"href":"https:\/\/llumdigital.com\/en\/wp-json\/wp\/v2\/media?parent=922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}