
(function(){ var TINT = 'rgba(217,235,243,0.97)'; var RADIUS = 35; var FEATHER = 0.0005; var MODE = 'trail'; var TRAIL_LIFETIME = 850; var SPAWN_INTERVAL = 15; var canvas = document.createElement('canvas'); canvas.style.cssText = 'position:fixed;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:1;'; document.body.appendChild(canvas); var ctx = canvas.getContext('2d'); function resize(){ var dpr = window.devicePixelRatio || 1; canvas.width = window.innerWidth * dpr; canvas.height = window.innerHeight * dpr; canvas.style.width = window.innerWidth + 'px'; canvas.style.height = window.innerHeight + 'px'; ctx.setTransform(dpr, 0, 0, dpr, 0, 0); } resize(); window.addEventListener('resize', resize); var points = []; var lastSpawn = 0; function addPoint(x, y){ var now = performance.now(); if (now - lastSpawn < SPAWN_INTERVAL) return; lastSpawn = now; points.push({ x: x, y: y, t: now }); } window.addEventListener('mousemove', function(e){ addPoint(e.clientX, e.clientY); }); window.addEventListener('touchmove', function(e){ var t = e.touches[0]; if (t) addPoint(t.clientX, t.clientY); }, { passive: true }); function draw(){ var now = performance.now(); var w = window.innerWidth, h = window.innerHeight; ctx.clearRect(0, 0, w, h); ctx.globalCompositeOperation = 'source-over'; ctx.fillStyle = TINT; ctx.fillRect(0, 0, w, h); ctx.globalCompositeOperation = 'destination-out'; points = points.filter(function(p){ return now - p.t < TRAIL_LIFETIME; }); points.forEach(function(p){ var age = (now - p.t) / TRAIL_LIFETIME; var alpha = 1 - age; var r = MODE === 'ripple' ? RADIUS * (0.15 + age * 0.9) : RADIUS * (1 - age * 0.3); var innerStop = MODE === 'ripple' ? Math.max(0, FEATHER - 0.2) : 0; var grad = ctx.createRadialGradient(p.x, p.y, r * innerStop, p.x, p.y, r); grad.addColorStop(0, 'rgba(0,0,0,' + alpha + ')'); grad.addColorStop(FEATHER, 'rgba(0,0,0,' + alpha + ')'); grad.addColorStop(1, 'rgba(0,0,0,0)'); ctx.fillStyle = grad; ctx.beginPath(); ctx.arc(p.x, p.y, r, 0, Math.PI * 2); ctx.fill(); }); requestAnimationFrame(draw); } requestAnimationFrame(draw); })();
portfolio
primate intelligence
anaco
gatlin robotics
axomind
operatic
acorn genetics
.
investing in early stage physical ai, supporting founders at the forefront of automation and robotics
email
linkedin