Rotating TwoPointLine
with orbitControls, XZgrid, info
by yi hom
HTML
<div id="info">Rotate hermite cruve
<div id="state"></div>
</div>
<script src="http://cdnjs.cloudflare.com/ajax/libs/three.js/r70/three.min.js"></script>
CSS
#info {
position: absolute;
top: 0px;
width: 100%;
padding: 10px;
text-align: center;
color: #ffff00
}
body {
overflow: hidden;
}
#state {
position: absolute;
top: 50px;
right: 150px;
width: 100%;
color: #ffffff;
text-align: center;
}
JavaScript
//var camera, scene, renderer, border;
var pos = new THREE.Vector3();
var q0,q1,q2,q3;
var ans,pt;
q0 = new THREE.Vector3(0, 0, 0);
q1 = new THREE.Vector3(0, 15, 0);
q2 = new THREE.Vector3(14, -10, 0);
q3 = new THREE.Vector3(13, 12, 0);
var p1 = new THREE.Vector3(0, 0, 0);
var t1 = q1.clone().sub(q0);
var p2 = new THREE.Vector3(13, 12, 0);
var t2 = q3.clone().sub(q2);
var stateInfo;
var coeff,tt0,tt1,tt2,tt3,sol0,sol1,sol2;
init();
animate();
function solve (q0,q1,q2,q3) {
p1 = q0;
t1 = q1.clone().sub(q0);
p2 = q3;
t2 = q3.clone().sub(q2);
return[Math.pow(p1.y,2)/25+Math.pow(p1.x,2)/100-1,
2*p1.y*t1.y/25 + p1.x*t1.x/50,
(-2*p1.y*t2.y/25) - p1.x*t2.x/50 + Math.pow(t1.y,2)/25 - 4*p1.y*t1.y/25 + Math.pow(t1.x,2)/100 - p1.x*t1.x/25 +
6*p1.y*p2.y/25 + 3*p1.x*p2.x/50 - 6*Math.pow(p1.y,2)/25 - 3*Math.pow(p1.x,2)/50,
(-2*t1.y*t2.y/25) + 2*p1.y*t2.y/25 - t1.x*t2.x/50 + p1.x*t2.x/50 - 4*Math.pow(t1.y,2)/25 + 6*p2.y*t1.y/25 -
4*p1.y*t1.y/25 - Math.pow(t1.x,2)/25 + 3*p2.x*t1.x/50 - p1.x*t1.x/25 - 4*p1.x*p2.y/25 - p1.x*p2.x/25 +
4*Math.pow(p1.y,2)/25 + Math.pow(p1.x,2)/25,
Math.pow(t2.y,2)/25 + 6*t1.y*t2.y/25 - 6*p2.y*t2.y/25 + 6*p1.y*t2.y/25 + Math.pow(t2.x,2)/100 + 3*t1.x*t2.x/50 -
3*p2.x*t2.x/50 + 3*p1.x*t2.x/50 + 6*Math.pow(t1.y,2)/25 - 16*p2.y*t1.y/25 + 16*p1.y*t1.y/25 + 3*Math.pow(t1.x,2)/50 -
4*p2.x*t1.x/25 + 4*p1.x+t1.x/25 + 9*Math.pow(p2.y,2)/25 - 18*p1.y*p2.y/25 + 9*Math.pow(p2.x,2)/100 - 9*p1.x*p2.x/50 +
9*Math.pow(p1.y,2)/25 + 9*Math.pow(p1.x,2)/100,
(-2*Math.pow(t2.y,2)/25) - 6*t1.y*t2.y/25 + 2*p2.y*t2.y/5 - 2*p1.y*t2.y/5 - Math.pow(t2.x,2)/50 - 3*t1.x*t2.x/50 +
p2.x*t2.x/10 - p1.x*t2.x/10 - 4*Math.pow(t1.y,2)/25 + 14*p2.y*t1.y/25 - 14*p1.y*t1.y/25 - Math.pow(t1.x,2)/25 +
7*p2.x*t1.x/50 - 7*p1.x*t1.x/50 - 12*Math.pow(p2.y,2)/25 + 24*p1.y*p2.y/25 - 3*Math.pow(p2.x,2)/25 + 6*p1.x*p2.x/25 -
12*Math.pow(p1.y,2)/25 -...