Guest User

Untitled

a guest
Mar 22nd, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import {state, BaseComponent} from './BaseComponent';
  2.  
  3. export class Vec2 extends BaseComponent {
  4.  
  5.     get x() {
  6.         return this[state][0];
  7.     }
  8.  
  9.     get y() {
  10.         return this[state][1];
  11.     }
  12.  
  13.     get length() {
  14.         const {x, y} = this;
  15.         return Math.sqrt(x * x + y * y);
  16.     }
  17.  
  18.     normalize() {
  19.         const {x, y, length} = this;
  20.         return length > 0 ? vec2({x: x / length, y: y / length}) : vec2();
  21.     }
  22. }
  23.  
  24. const vec2 = (() => {
  25.     "use strict";
  26.  
  27.     return Object.assign((x = 0, y = 0) => {
  28.         return Object.freeze(new Vec2([x, y]));
  29.     }, {
  30.  
  31.         direction(angle) {
  32.             const x = Math.cos(angle);
  33.             const y = Math.sin(angle);
  34.             return vec2({x, y});
  35.         },
  36.  
  37.         dot(vecA, vecB) {
  38.             return vecA.x * vecB.x + vecA.y * vecB.y;
  39.         }
  40.     });
  41.  
  42. })();
  43.  
  44. export default vec2;
Advertisement
Add Comment
Please, Sign In to add comment