let context; let counter = 0; const maxHeight = document.documentElement.clientHeight; const maxWidth = document.documentElement.clientWidth; let center = new Point(maxWidth / 2, maxHeight / 2); let growFactor = 0; let centerTriangle; let wanderingTriangle; const border = 100; let offsetY = border, offsetX = border; Math.radians = degrees => degrees * (Math.PI / 180) Math.degrees = radians => radians * (180 / Math.PI) window.onload = event => { centerTriangle = new Triangle(300) wanderingTriangle = new Triangle(100) const canvasNode = document.querySelector('#canvas') canvasNode.height = maxHeight canvasNode.width = maxWidth context = canvasNode.getContext('2d') window.requestAnimationFrame(drawFrame) } function clearCanvas(ctx) { ctx.fillStyle = '#000000' ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height) } function drawFrame(timestamp) { clearCanvas(context) // offsetY = (offsetY >= context.canvas.height) ? 0 : offsetY + 1; // offsetX = (offsetX >= context.canvas.width) ? 0 : offsetX + 1; centerTriangle.drawAt(context, '#f02af7', center) centerTriangle.rotateBy(1) if (offsetX < maxWidth - border && offsetY <= border) { offsetX += 10 } else if (offsetX >= maxWidth - border && offsetY < maxHeight - border) { offsetY += 10 } else if (offsetX > border && offsetY >= maxHeight - border) { offsetX -= 10 } else { offsetY -= 10 } const currentOffset = new Point(offsetX, offsetY) wanderingTriangle.drawAt(context, '#f02af7', currentOffset) wanderingTriangle.rotateBy(4) // centerTriangle.drawAt(context, '#f02af7', center.translateBy(new Point(center.x - xOffset, center.y - offset))) // centerTriangle.drawAt(context, '#f02af7', center.translateBy(new Point(-center.x + xOffset, center.y - offset))) window.requestAnimationFrame(drawFrame) } const getRotationMatrix = angle => { const phi = Math.radians(angle) return [[Math.cos(phi), -Math.sin(phi)], [Math.sin(phi), Math.cos(phi)]] }