Threejs - Lines and Angles

by black strings

HTML

<script src="https://rawgit.com/mrdoob/three.js/dev/build/three.js"></script>
<script src="https://rawgit.com/mrdoob/three.js/dev/examples/js/controls/OrbitControls.js"></script>
<div id="con">

</div>
<div id="val">

</div>
<p>
is inside or outside corner
</p>

JavaScript

var objects = []; 
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 35, window.innerWidth/window.innerHeight, 0.1, 1000 );
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
renderer.setClearColor( 0xcccccc, 1 ); 
document.body.appendChild( renderer.domElement );
scene.add(camera);

controls = new THREE.OrbitControls(camera, renderer.domElement);
setToFullOrbit(controls)
camera.position.copy(new THREE.Vector3(0,0,10));

var axisHelper = new THREE.AxesHelper();
//scene.add(axisHelper);

// -------------------------- Playground here ----------------------- //
//var arcLine = arcLine();
//var spline = createSpline();

// inside 1
var line1 = lineWithArrow(new THREE.Vector3(-6,6,0), new THREE.Vector3());
var line2 = lineWithArrow(new THREE.Vector3(), new THREE.Vector3(0,5,0));

// outside
//var line1 = lineWithArrow(new THREE.Vector3(0,-5,0), new THREE.Vector3());
//var line2 = lineWithArrow(new THREE.Vector3(), new THREE.Vector3(5,5,0));

var result = isInsideCorner(line1, line2);
print(result ? 'insideCorner' : 'outsideCorner');
// rotate line
//lineTail.applyMatrix(new THREE.Matrix4().makeRotationZ(THREE.Math.degToRad(45))); 
//lineTail.rotateZ(THREE.Math.degToRad(45));

// after rotating, lets see the direction of Y
//getFacingDirectionThroughLocalMatrix(lineTail);

//calcLine(lineTail2);



// --------------------------- end of playgound -------------- //
function print(value){
	document.getElementById('con').innerHTML = value;
}

function getVec3sFromBufferGeo(buffGeo) {
	var vec3s = [];
  if(buffGeo) {
  	var attr = buffGeo.getAttribute('position');
    if(attr) {
      for(var i=0; i<attr.count; i++){
				vec3s.push(new THREE.Vector3().fromBufferAttribute(attr, i));
      }
    }
  }
  return vec3s;
}

function isInsideCorner(line1, line2){
	var isInside = false;
  
  // side1 directionVector
  var s1Start = getVec3sFromBufferGeo(line1.geometry)[0].clone();
  var s1End =...