SinCos

SinCos is my space game. Size: 4KB

by Станислав Некрасов

HTML

<style>
  body {
    margin: 0;
    overflow: hidden
  }
</style>

<canvas style="background: #000;"></canvas>

<script>
	// Первая обёртка
  (function (canvas, width, height, oldTime) {
  	// При изменении размеров экрана
    (window.onresize = function() {
      width = canvas.width = window.innerWidth;
      height = canvas.height = window.innerHeight;
    })();
    // Вторая обёртка
    (function (context) {
    
    	// Функции для получения координат точки
      var getModelX = (x, size, angle, radius, offset) => 
      	+(x + size * radius * Math.cos(angle + offset * Math.PI)).toFixed(2);
      var getModelY = (y, size, angle, radius, offset) => 
      	+(y + size * radius * Math.sin(angle + offset * Math.PI)).toFixed(2);
    
    	var getRealPoints = ({x, y, model, size, angle}) => {
      	var xp = [], yp = [];
        for (var n = 0; n < model.length; n++) {
        	xp.push(getModelX(x, size, angle, model[n][0], model[n][1]));
          yp.push(getModelY(y, size, angle, model[n][0], model[n][1]));
        }
        return [xp, yp];
      }	
    
    	// Функция для рисования фигур
      var drawFigure = (x, y, angle, points, 
      		size=1, color='#fff') => {
    		context.fillStyle = color;
        context.beginPath();
        points.forEach(([radius, offset]) => {
          context.lineTo(
          	camera.zoom * (camera.dx + getModelX(x, size, angle, radius, offset)),
            camera.zoom * (camera.dy + getModelY(y, size, angle, radius, offset))
          )
        });
        context.fill();
      };
      
      // Функция для проверки принадлежности точки полигону
			var pointInPolygon = (x, y, polygonPoints) => {
      	var xp = polygonPoints[0], yp = polygonPoints[1];
   			pointsNum = xp.length;
   			j = pointsNum - 1;
   			var c = 0;
   			for (i = 0; i < pointsNum; i++){
       		if ((((yp[i]<=y) && (y<yp[j])) || ((yp[j]<=y) && (y<yp[i]))) && (x > (xp[j] - xp[i]) * (y - yp[i]) / (yp[j] - yp[i]) + xp[i])) {
        		c = !c;
       ...

JavaScript

w