collision test finish

by Alan Lin

HTML

<div id="info">baseball bat
  <br/>collision detection</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r78/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://jyunming-chen.github.io/tutsplus/js/KeyboardState.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/dat-gui/0.5.1/dat.gui.min.js"></script>

CSS

#info {
  position: absolute;
  top: 0px;
  width: 100%;
  padding: 10px;
  text-align: center;
  color: #ffff00
}

body {
  overflow: hidden;
}

JavaScript

var scene, renderer, camera;
var controls;
var batR = 0.5, batH  = 10;
var pos ,vel,force;
var ballr = 0.7;
var ball0,ball1;
var ball0 = new THREE.Vector3(), ball0trans = new THREE.Vector3();
var ball1 = new THREE.Vector3(), ball1trans = new THREE.Vector3();
var pt, x,y,z, b;
var clock = new THREE.Clock();
var clock2 = new THREE.Clock();
var pitchtime = 0;
var hitturn = false;
var batturn = true;
var vPlus, tmp, nn, v;
var j = new THREE.Vector3 (0,0,0);
var bc = new THREE.Vector3();

init();
animate();


function init() {
	scene = new THREE.Scene();

  camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 1000);
  camera.position.set(0,10,30);
  scene.add(camera);

  light = new THREE.PointLight(0xffffff);
  light.position.set(100, 300, 200);
  scene.add(light);
	
  var gridXZ = new THREE.GridHelper(20, 1);
  
  scene.add(gridXZ);
  
	renderer = new THREE.WebGLRenderer();
  renderer.setSize(window.innerWidth, window.innerHeight);
  renderer.setClearColor(0xaaaaaa);
  ///////////////////////////////////////////////////////////
  batorigin =  new THREE.Object3D();
  
  bat = new THREE.Mesh( new THREE.CylinderGeometry( batR, batR, batH, 32 ), new THREE.MeshNormalMaterial());
  bat.position.set(0,batH/2,0);
	batorigin.add(bat);	
  
  batHead = new THREE.Mesh (new THREE.SphereGeometry(ballr,64,64), new THREE.MeshBasicMaterial({color:0x00ff00}));
  scene.add (batHead);
  
  batTail = new THREE.Mesh (new THREE.SphereGeometry(ballr,64,64), new THREE.MeshBasicMaterial({color:0xff0000})); 
  scene.add (batTail);
  
  batTailX = new THREE.Mesh (new THREE.SphereGeometry(ballr,64,64), new THREE.MeshBasicMaterial({color:0x0000ff}));
  scene.add (batTailX);
  
  batorigin.position.set(0,0,5);
 	batorigin.rotation.x = -Math.PI/4;
  //batorigin.rotation.z = Math.PI/4;
  scene.add(batorigin);
  
///////////////////////////////////////////////////////////

  baseball = new THREE.Mesh (new THREE.SphereGeometry(ballr,64,64), new...