title: convert 3d coordinates to 2d screen coordinates (plane mesh)
body: <p>Hello I have a plane in three.js with width 5000 and height 5000. With the following code I convert 3d coordinates into 2d, more specific I get the top left point of the plane and the bottom right.
  I initialize my camera with position x: 0, y: 0, z: 70000 and rotation x:0,y:0,z:0.</p>
  
  <p>The coordinates I get if I don't rotate my camera (using orbit controls) are correct:</p>
  
  <p><img src="https://i.stack.imgur.com/Rih2Q.jpg" alt="enter image description here"></p>
  
  <p>however if I rotate my camera the coordinates are not correct and I cant figure out why.
  Here is my code so far:</p>
  
  <pre><code>var vec3 = new THREE.Vector3();
      vec3.set( _that.model.position.x - 2500, _that.model.position.y + 2500, _that.model.position.z ); // top left corner
      vec3.project( _that.vise.camera );
  
  var percX = Math.abs(vec3.x + 1) / 2;
  var percY = Math.abs(-vec3.y + 1) / 2;
  
  this.topLeft = {
      x : percX * _that.vise.options.generic.container.clientWidth,
      y : percY * _that.vise.options.generic.container.clientHeight
  }
  
  var vec4 = new THREE.Vector3();
      vec4.set( _that.model.position.x + 2500, _that.model.position.y - 2500, _that.model.position.z ); // top left corner
      vec4.project( _that.vise.camera );
  
  var percX = Math.abs(vec4.x + 1) / 2;
  var percY = Math.abs(-vec4.y + 1) / 2;
  
  this.bottomRight = {
      x : percX * _that.vise.options.generic.container.clientWidth,
      y : percY * _that.vise.options.generic.container.clientHeight
  }
  
  this.projectedVector = {
      x : Math.abs(this.topLeft.x - this.bottomRight.x),
      y : Math.abs(this.topLeft.y - this.bottomRight.y)
  }
  </code></pre>