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...