code: function Ellipse2D( x , y , sx , sy , semiMajor , semiMinor ) {
  	this.center = new Vector2D( x , y ) ;
  	this.majorAxis = new Vector2D( sx , sy ).normalizeCheck() ;
  	this.semiMajor = + semiMajor ;
  	this.semiMinor = + semiMinor ;
  
  	// Mostly used to cache the result
  	this.focus1 = new Vector2D() ;
  	this.focus2 = new Vector2D() ;
  	this.c = 0 ;
  	this.e = 0 ;
  
  	this.r = null ;
  
  	this.update() ;
  }
docs: /*
  This is a circle with a major axis and semi-major and semi-minor length.
  
  Major axis vector MUST remain normalized!
  All constructors normalize it, but direct access should modify that with great care.
  
  Semi-major should be greater than semi-minor.