рдПрдХ рдФрд░ рд╕реМрд░ рдкреНрд░рдгрд╛рд▓реА рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдХреИрдирд╡рд╕


рдирдП рд╕рд╛рд▓ рд╕реЗ рдкрд╣рд▓реЗ , рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдХреИрдирд╡рд╕ рдореЗрдВ "рд╕реМрд░ рдкреНрд░рдгрд╛рд▓реА" рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдм ( рдкрд╣рд▓реЗ , рджреВрд╕рд░реЗ ) рдкрд░ рджреЛ рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрдиреНрд╣реЗрдВ рдзрд╛рд░рд╛рдкреНрд░рд╡рд╛рд╣ рдкрдврд╝рдиреЗ рдФрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рдЗрддрдирд╛ рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрддрдиреА рдЕрдХреНрд╖рдорддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдиреЛрдЯрдкреИрдб ++ рдХреЗ рд╕рд╛рде рд╕рд╢рд╕реНрддреНрд░, рдореИрдВрдиреЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдмреБрд░рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦреВрдВред

рдЯреАрдХреЗ рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИред 12 рдЧреНрд░рд╣, рдкрд╣рд▓реЗ рдХрд╛ рдкрд░рд┐рд╕рдВрдЪрд░рдг рдХрд╛рд▓ тАЛтАЛ40 рд╕реЗрдХрдВрдб рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдореЗрдВ 20 рд╕реЗрдХрдВрдб рд▓рдВрдмрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЧреНрд░рд╣реЛрдВ рдХреА рдЕрдкрдиреА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡реНрдпрд╡рд╕реНрдерд╛ рд╣реЛрддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╣ рдХрд╛ рдПрдХ рд╡рд┐рд╡рд░рдг рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдКрдкрд░ рдордВрдбрд░рд╛рдиреЗ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдЬрдм рдЖрдк рдХрд┐рд╕реА рдЧреНрд░рд╣ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХрд░реНрд╕рд░ рдХрдХреНрд╖рд╛ рд╕реЗ рдКрдкрд░ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВред рдпрд╣ рд╕рдм рдУрдкреЗрд░рд╛ 12+, IE9 +, рдХреНрд░реЛрдо рдФрд░ рдПрдлрдПрдл рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

- рдореИрдВ рдХреБрдЫ рднреА рдкрдврд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛, рдкрд░рд┐рдгрд╛рдо рджреЛ!
- рдкрдХрдбрд╝реЛ: рдирд┐рдЪреЛрдбрд╝реЛ

рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдирдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рддрд╛ рд╣реВрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдореИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ js / css / img рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рд░реВрдЯ рдореЗрдВ рдореИрдВ main.html рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реВрдВ, рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕реЗрдЯ рдХреЛ рдПрдХ рдкреВрд░реЗ рдореЗрдВ рдЬреЛрдбрд╝рддреА рд╣реИред

рдкрд╣рд▓реА рд▓рд╛рдЗрдиреЗрдВ


рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рддреАрди рддрд╕реНрд╡реАрд░реЗрдВ рдорд┐рд▓реАрдВ: рд╕реВрд░реНрдп, рдкреГрд╖реНрдарднреВрдорд┐ рдФрд░ рдЧреНрд░рд╣ рдЯрд╛рдЗрд▓реЗрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдзрд┐рдХ рдЪрд┐рддреНрд░ рд╣реИрдВ)ред рдЦреИрд░, рдЕрдм рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЖрд╡реЗрджрди рдореЗрдВ рдФрд░ рдПрдХ рдХреЗ рд▓рд┐рдП рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред рд╡реИрд╕реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдЪрд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдВрдЧреЗ: рдкреНрд╡рд╛рдЗрдВрдЯ, рдСрд░реНрдмрд┐рдЯ, рдкреНрд▓реЗрдиреЗрдЯ рдФрд░ рдЯрд╛рдЗрд▓ред рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдмрд┐рдВрджреБ рдПрдХ рд╕реЗрд╡рд╛ рд╡рд╕реНрддреБ рд╣реИ, рджреЛ рдлрд╝реАрд▓реНрдб рд╣реИрдВ, x рдФрд░ y - рдХреИрдирд╡рд╛рд╕ рдкрд░ рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐, рдФрд░ рдХрдИ рд╡рд┐рдзрд┐рдпрд╛рдБ: (), .clone (), .getDis () - рд╕рдордиреНрд╡рд┐рдд рдорд╛рди рд╕реЗрдЯ рдХрд░реЗрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреНрд▓реЛрди рдХрд░реЗрдВ рдФрд░ рджреВрд╕рд░реЗ рдмрд┐рдВрджреБ рддрдХ рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред рдСрд░реНрдмрд┐рдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдСрд░реНрдмрд┐рдЯ рдХрд╛ рдХреЗрдВрджреНрд░, рдЙрд╕рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рдФрд░ рдЙрд╕рдХреЗ рд╕рд╛рде рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдЧреНрд░рд╣ рд╣реЛрддрд╛ рд╣реИред (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕реВрддреНрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрджрд░реНрд╢ рд╣реИ, рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рднреА рдХрдХреНрд╖рд╛рдУрдВ - рдордВрдбрд▓рд┐рдпрд╛рдВ рд╣реИрдВ)ред рддреАрд╕рд░реА рд╡рд╕реНрддреБ рдЧреНрд░рд╣ рд╣реИред рдЧреНрд░рд╣ рдХрд╛ рдПрдХ рдирд╛рдо, рдХреИрдирд╡рд╛рд╕ рдкрд░ рдПрдХ рдХреЗрдВрджреНрд░ рдмрд┐рдВрджреБ, рддреНрд░рд┐рдЬреНрдпрд╛, рдЧрддрд┐ рдХреА рдЧрддрд┐ рдФрд░ рдбрд┐рдЧреНрд░реА рдореЗрдВ рдЭреБрдХрд╛рд╡ рдХрд╛ рдХреЛрдг рд╣реИред рдЕрдВрддрд┐рдо рдЯрд╛рдЗрд▓ рд╡рд╕реНрддреБ рдЫрд╡рд┐ рдореЗрдВ рдЧреНрд░рд╣ рдХреА рдЫрд╡рд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП рдЫрд╡рд┐ рдФрд░ рдЪрд╛рд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИ: рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ, рдКрдВрдЪрд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХред рдЯрд╛рдЗрд▓ рдореЗрдВ рд╡рд┐рджрдбреНрд░реЙрд▓ (x, y) рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдмрд┐рдВрджреБ рдкрд░ рдХреИрдирд╡рд╛рд╕ рдкрд░ рдЦреАрдВрдЪрддреА рд╣реИред

рд▓реЗрдХрд┐рди рдЗрддрдирд╛ рдЯреЗрдХреНрд╕реНрдЯ, рдмреЗрд╣рддрд░ рдХреЛрдб рдХреНрдпреЛрдВ
// Point.js function Point(x, y) { this.x; this.y; this.set(x, y); //   }; Point.prototype = { set: function(x, y) { this.x = x || 0; this.y = y || 0; }, getDis: function(other) { return Math.sqrt(Math.pow(other.x - this.x, 2) + Math.pow(other.y - this.y, 2)); }, clone: function() { return new Point(this.x, this.y); } }; // Orbit.js function Orbit(center, radius) { this.center = center; this.radius = radius; this.planet = null; //      this.ctx = null; this.mouse = null; }; // Planet.js function Planet(orbit, radius, time) { this.pos = new Point(0, 0); this.orbit = orbit; this.radius = radius; this.speed = Math.PI*2 / (time * 1000); //    this.angle = ~~(Math.random() * 360); //    this.animate = true; this.name; this.tile; this.ctx; this.orbit.setProperty({'planet': this}); //     }; // Tile.js function Tile(ctx, img, x, y, w, h) { this.ctx = ctx; //    this.img = img; //   - this.x = x; this.y = y; this.width = w; this.height = h; }; Tile.prototype = { draw: function(x, y) { this.ctx.drawImage(this.img, this.x, this.y, this.width, this.height, x, y, this.width, this.height); } }; /** * @param (object) property       * @param (bool) add        property,     */ Object.prototype.setProperty = function(property, add) { if (add !== true) add = false; for (var key in property) { if (property.hasOwnProperty(key)) { if (typeof this[key] !== 'undefined' || add) { this[key] = property[key]; } } } return this; } 

рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реЗрдЯрд░ рдирд╣реАрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ .setProperty () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЧрд┐рдирдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдлрд╝рдВрдХреНрд╢рди рдирдП рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдкреБрд░рд╛рдиреЗ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред

рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдбрд░ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдлреНрд░реАрдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕реЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╡рд┐рдзрд┐ рдмрдирд╛рдпрд╛: рдПрдХ рдирдИ рдЫрд╡рд┐ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдореИрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реВрдВ, рдЫрд╡рд┐ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж - рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХрд╛ рдХрд╛рдЙрдВрдЯрд░ред рдпрджрд┐ рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреЗ рдореВрд▓реНрдп рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рд╕рдВрд╕рд╛рдзрди рд▓реЛрдб рд╣реЛ рдЧрдП рд╣реИрдВ рдФрд░ рдЖрдк рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдЕрдирд▓реЛрдбрд░ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдЛрдг рд╣реИ, рдЖрдк рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

рд▓реЛрдбрд░
 var IM = { // Images Manager store: {}, //   imagesAdded: 0, //   imagesLoaded: 0, //   add: function(url, name) { //   var self = this; var img = new Image(); img.onload = function() { self.imagesLoaded++; if (self.imagesAdded == self.imagesLoaded) { self.afterRun(); // ,     } } img.src = url; this.store[name] = img; this.imagesAdded++; }, afterRun: function() { //     render(new Date() * 1); //      } }; IM.add('img/sun.png', 'sun'); //   IM.add('img/planets.png', 'planets'); //    

рдЧреНрд░рд╣


рдЧреНрд░рд╣реЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдЧреНрд░рд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рд╣рдо рдХрдХреНрд╖рд╛, рдЧреНрд░рд╣ рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдкреВрд░реНрдг рд░реЛрдЯреЗрд╢рди рдХреЗ рд╕рдордп (рд╕реЗрдХрдВрдб рдореЗрдВ), рд╕рд╛рде рд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреБрдг: рдирд╛рдо, рдЯрд╛рдЗрд▓ рдФрд░ рд╕рдВрджрд░реНрдн рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡реИрд╕реЗ, рд╕реВрд░реНрдп, рдПрдХ рдЧреНрд░рд╣ рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рд╢реВрдиреНрдп рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╣реИред

 var planets = []; //   var mouse = {}; //    var globalCenter = new Point(canvas.width / 2, canvas.height / 2); //   //     globalCenter    var orbit = new Orbit(globalCenter.clone(), 0).setProperty({ ctx: ctx, //  mouse: mouse //  ,    }, true); //     50    1.       . var planet = new Planet(orbit, 50, 1).setProperty({ tile: new Tile(this.ctx, this._resources['sun'], 0, 0, 100, 100), name: 'Sun', ctx: ctx }, true); planets.push(planet); //   var names = ['Moon', 'Phobos', 'Deimos', 'Dactyl', 'Linus', 'Io', 'Europa', 'Ganymede', 'Callisto', 'Amalthea', 'Himalia', 'Elara', 'Pasiphae', 'Taurus', 'Sinope', 'Lysithea', 'Carme', 'Ananke', 'Leda', 'Thebe', 'Adrastea', 'Metis', 'Callirrhoe', 'Themisto', '1975', '2000', 'Megaclite', 'Taygete', 'Chaldene', 'Harpalyke']; var tiles = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; //    var time = 40; shuffle(names); //   shuffle(tiles); for (var i = 0; i < 12; ++i) { //     90   ,     26 orbit = new Orbit(globalCenter.clone(), 90+i*26).setProperty({ ctx: this.ctx, mouse: this.mouse }, true); planet = new Planet(orbit, 13, time).setProperty({ tile: new Tile(this.ctx, this._resources['planets'], tiles[i]*26, 0, 26, 26), name: names[i], ctx: this.ctx }, true); this.planets.push(planet); time += 20; } 


рдареАрдХ рд╣реИ, рдЕрдм рдЧреНрд░рд╣ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдЕрднреА рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╣реИ рдФрд░ рдЦреБрдж рдХреЛ рдХреИрд╕реЗ рдЦреАрдВрдЪрдирд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ! рдореИрдВ рдПрдХ рд░реЗрдВрдбрд░ (рдЕрдВрддрд┐рдо рд╕рдордп) рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реВрдВ рдЬреЛ рдЙрд╕ рджреГрд╢реНрдп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд╕рдордп рд▓реЗрддрд╛ рд╣реИред рд░реЗрдВрдбреЗрди рдиреЗ рдЧреНрд░рд╣реЛрдВ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдФрд░ рд╕рдордп рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрд╛ред рдЕрдЧрд▓рд╛, рдкреНрд▓реИрдиреЗрдЯ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ, рдореИрдВ .redner (рдбреЗрд▓реНрдЯрд╛ рдЯрд╛рдЗрдо) рд╡рд┐рдзрд┐ рдмрдирд╛рддрд╛ рд╣реВрдВ, рдЬреЛ рдЕрдВрддрд┐рдо рджреГрд╢реНрдп рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рдж рд╕реЗ рдЧреБрдЬрд░реЗ рд╕рдордп рдХреЛ рд▓реЗрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рд╕рдордп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧреНрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрджреНрдпрддрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдЧреНрд░рд╣ рдХреЛ рдЦреАрдВрдЪрддрд╛ рд╣реИред рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рднреА рдореИрдВ рдЧреНрд░рд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .showInfo () рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдКрдВрдЧрд╛ред

рдирдЬрд╝рд░
 function render(lastTime) { var curTime = new Date(); requestAnimationFrame(function(){ render(curTime); }); ctx.clearRect(0, 0, canvas.width, canvas.height); for (var i = 0, il = planets.length; i < il; ++i) { planets[i].render(curTime - lastTime); } } Planet.prototype = { drawBorder: function() { //   var ctx = this.ctx; ctx.beginPath(); ctx.arc(this.pos.x, this.pos.y, this.radius * 1.1, 0, Math.PI * 2, true); ctx.closePath(); ctx.stroke(); }, showInfo: function() { var x = this.pos.x + this.radius * 0.7; //      var y = this.pos.y + this.radius * 0.9; //  ox  oy ctx.fillStyle = '#002244'; ctx.fillRect(x, y, 100, 24); ctx.fillStyle = '#0ff'; ctx.fillText(this.name, x + 50, y + 17); }, render: function(deltaTime) { // r(fi) = radius, r - , fi -    this.pos.x = this.orbit.globalCenter.x + this.orbit.radius * Math.cos(this.angle); this.pos.y = this.orbit.globalCenter.y + this.orbit.radius * Math.sin(this.angle); this.angle += this.speed * deltaTime; //   if (typeof this.tile !== 'undefined') { //         this.tile.draw(this.pos.x - this.radius, this.pos.y - this.radius); } } }; 

рдореИрдВ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реВрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдлрд┐рд░ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЪреАрдпрд░реНрд╕ рдХрд░рддрд╛ рд╣реВрдВ: рдЧреНрд░рд╣ рд╕реНрдерд┐рд░ рд╕реВрд░реНрдп рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддреЗ рд╣реИрдВред
рдЫрд╡рд┐
рдпрд╣ рдмрд╕ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣реА рд░рд╣рддрд╛ рд╣реИ: рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдирдХреЗ рдЪрдпрди рдХрд╛ рдПрдиреАрдореЗрд╢рди рдФрд░ рдЧреНрд░рд╣реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рдореЗрдВ рдорд╛рдЙрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдпрд╣ рдХрд╣рд╛рдБ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЪрд╛рд╣реЗ рдЙрд╕ рдкрд░ рдмрдЯрди рд╣рд┐рд▓реЗрдВ, рджрдмреЗрдВ рдпрд╛ рджрдмреЗрдВред рдорд╛рдЙрд╕рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреИрдирд╡рд╛рд╕ рдкрд░ рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдЧрд╛ред рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреЗ рдкрд░, рдЖрдк рд╣реЙрд╡рд░ рдИрд╡реЗрдВрдЯ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдХрд░реНрд╕рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдХрдХреНрд╖рд╛ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рдЕрдВрддрд░ рдХрд╛ рдорд╛рдкрд╛рдВрдХ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рди (рдореЗрд░реЗ рдкрд╛рд╕ 14px) рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдпрд╣ рд╣реЙрд╡рд░ рд╣реИред рдЕрдм, рдпрджрд┐ рд╣реЙрд╡рд░ рдШрдЯрдирд╛ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдПрдХ рд╡реГрддреНрдд рдХреА рд░реЗрдЦрд╛ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдЪрдХреНрд░ рд░реЗрдЦрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдШреЗрд░рд╛ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдКрдкрд░ рдХрд╛ рд╡рд╣ рднрд╛рдЧ рдЬрд╣рд╛рдВ рдЧреНрд░рд╣ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдФрд░ рдЪрдХреНрд░ рдЙрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреНрд░рд╣ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ред рдпрджрд┐ рдХреЛрдИ рдордВрдбрд░рд╛рдирд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ рдкрддрд▓реА рд░реЗрдЦрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдареЛрд╕ рдЪрдХреНрд░ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЧреНрд░рд╣реЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рдЖрд╕рд╛рди рд╣реИред рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдЧреНрд░рд╣ рдкрд░ рдХрд░реНрд╕рд░ рд╕реНрдерд┐рдд рд╣реИ, рдФрд░ рдЗрд╕ рдЧреНрд░рд╣ рдкрд░ .showInfo () рдХреЙрд▓ рдХрд░реЗрдВред рдПрдХ рдмрд╛рдд рд╣реИ рд▓реЗрдХрд┐рди, рдХреИрдирд╡рд╛рд╕ рдХреЗ рд╕рдВрдХреЗрдд рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдЦреАрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЗрд╕рдХреЗ рдКрдкрд░ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЦреАрдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдирдЬрд╝рд░
 Orbit.prototype = { draw: function() { var ctx = this.ctx; var hover = this.mouse && Math.abs(mouse.pos.getDis(this.center) - this.radius) < 13; //    if (hover) { //   ctx.lineWidth = 2; ctx.strokeStyle = 'rgb(0,192,255)'; ctx.beginPath(); //  ctx.arc(this.center.x, this.center.y, this.radius, 0, Math.PI * 2, true); ctx.closePath(); ctx.stroke(); if (typeof this.planet !== null) { //      //       ctx.clearRect(this.planet.pos.x - this.planet.radius, this.planet.pos.y - this.planet.radius, this.planet.radius * 2, this.planet.radius * 2); //         this.planet.drawBorder(); } } else { //   ctx.lineWidth = 1; ctx.strokeStyle = 'rgba(0,192,255,0.5)'; ctx.beginPath(); ctx.arc(this.center.x, this.center.y, this.radius, 0, Math.PI * 2, true); ctx.closePath(); ctx.stroke(); } } function render(lastTime) { var curTime = new Date(); requestAnimationFrame(function(){ render(curTime); //      }); ctx.clearRect(0, 0, canvas.width, canvas.height); //   var showInfo = -1; //        for (var i = 0, il = planets.length; i < il; ++i) { //   planets[i].orbit.draw(); //   planets[i].render(curTime - lastTime); //   if (Math.abs(planets[i].pos.x-mouse.pos.x) < planets[i].radius //      && Math.abs(planets[i].pos.y-mouse.pos.y) < planets[i].radius) { showInfo = i; //  ,    //if (mouse.pressed) { //        // planets[i].animate = planets[i].animate ? false : true; //} } } if (showInfo > -1) { //    ,   planets[showInfo].showInfo(); document.body.style.cursor = 'pointer'; } else { document.body.style.cursor = 'default'; } } };       .       App. 

рдбреЗрдореЛ | рдбрд╛рдЙрдирд▓реЛрдб

рдирд┐рд╖реНрдХрд░реНрд╖


рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╡рд┐рдЪрд╛рд░ рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреИрдирд╡рд╛рд╕ рдкрд░ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕реЗ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдЪ рд╣реИред рд▓реЗрдХрд┐рди рдЫреЛрдЯреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдпрд╣ рдирд┐рдпрдо рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдХреЛрдИ рдЬрдЯрд┐рд▓ рдПрдирд┐рдореЗрд╢рди рдирд╣реАрдВ рд╣реИрдВ, рдХрдИ рдкреЗрдВрдЯрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдореЗрд░реЗ рдкреАрд╕реА (AMD Athlon64 x2 4600+ 2.4GHz, GeForce 210) рдкрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдоред
рдореВрд▓:

LibCanvas рдкрд░ (рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ 60 рдПрдлрдкреАрдПрд╕ рдХреА рд╕реАрдорд╛ рд╣реИ):

рдореЗрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:


рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/In164899/


All Articles