basketball
right-handed
HTML
<div id="info">
Basketball Dribble Example to Baseball Picther
<br>
<br> ( generic CCD Solver )
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r70/three.min.js"></script>
<script src="https://dl.dropboxusercontent.com/u/3587259/Code/Threejs/OrbitControls.js"></script>
<script src="https://rawgit.com/jyunming-chen/game3js/master/js/ccdbox.js"></script>
CSS
body {
background-color: #fff;
color: #111;
margin: 0px;
overflow: hidden;
font-family: Monospace;
font-size: 20px;
}
#info {
position: absolute;
top: 0px;
width: 100%;
padding: 5px;
text-align: center;
color: #ffff00
}
a {
color: #00ffff
}
strong {
color: red
}
#container {
z-index: 0;
left: 0px;
top: 0px;
overflow: hidden;
position: absolute;
width: 100%;
height: 100%;
}
JavaScript
var scene, renderer, camera;
var controls;
var lowerArm, upperArm;
var clock = new THREE.Clock();
var clock2 = new THREE.Clock();
var clock3 = new THREE.Clock();
var sign = 1;
var sign2 = 1;
var zz = -30;
var yy = 0;
var theta = [];
var release = false;
var gcontrols;
var theta1 = 0,
theta2 = 0,
theta3 = 0;
var tsphere;
var dt = 0;
var dt2;
var torsoTurn = 0;
var getPoint = new THREE.Vector3(0,0,0);
var getPoint2 = new THREE.Vector3(0,0,0);
var axes = [];
var joints = [];
var v0= new THREE.Vector3(0,0,0);
var force =new THREE.Vector3(0,0,0);
var vel2 =new THREE.Vector3(0,0,0);
var isCheck = false;
var isFirst = true;
vel = new THREE.Vector3(0, 0, 0);
gravity = new THREE.Vector3(0, -98, 0);
pos = new THREE.Vector3 (-30, 35, 27);
init();
animate();
////////////////////////////////////////////////////////
// forward kinematics
function fk(q, joints) {
// joint[0]: shoulder
// joint[1]: elbow
// joint[2]: hand
// joints[0] = new THREE.Vector3(0,0,0);
var m = new THREE.Matrix4();
// from home plate
var localzero = new THREE.Vector3(0, 0, 0);
m.makeTranslation(0, 0, -25);
m.multiply(new THREE.Matrix4().makeRotationY(torsoTurn));
m.multiply(new THREE.Matrix4().makeTranslation(-25, 100, 0));
localzero.applyMatrix4(m);
joints[0].copy(localzero);
m.multiply (new THREE.Matrix4().makeRotationZ(q[0]));
m.multiply(new THREE.Matrix4().makeRotationX(q[1]));
m.multiply(new THREE.Matrix4().makeTranslation(0, -50, 0));
localzero.set(0, 0, 0);
localzero.applyMatrix4(m);
joints[1].copy(localzero);
m.multiply(new THREE.Matrix4().makeRotationX(q[2]));
m.multiply(new THREE.Matrix4().makeTranslation(0, -60, 0));
localzero.set(0, 0, 0);
localzero.applyMatrix4(m);
joints[2].copy(localzero);
}
/////////////////////////////////////////////////////////////
// joint axis setup
//
function setarm() {
var axis = new CCD_axis(new THREE.Vector3(0, 0, 1), 0);
//axis.limits = new THREE.Vector2 (-6, 0);
...