OBB
option 2
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/three.js/r70/three.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/numeric/1.2.6/numeric.min.js"></script>
CSS
#info {
position: absolute;
top: 0px;
width: 100%;
padding: 10px;
text-align: center;
color: #ffff00
}
JavaScript
var camera, scene, renderer;
var arm, arm2;
var angle = 0.5;
var endEffector;
var obbLine;
init();
animate();
function init() {
scene = new THREE.Scene();
let axes = new THREE.AxisHelper( 20 );
scene.add( axes );
camera = new THREE.PerspectiveCamera( 40, 830 / 430, 1, 1000 );
camera.position.set(30, 30, 30);
camera.lookAt(new THREE.Vector3(0,0,0));
// camera = new THREE.OrthographicCamera(-50, 50, 50, -50, -10, 10);
// camera.position.z = 10;
scene.add(camera);
///////////////////////////////////////////////////////////
arm = new THREE.Object3D();
scene.add(arm);
var mesh = new THREE.Mesh(new THREE.PlaneGeometry(20, 5),
new THREE.MeshBasicMaterial());
mesh.position.set(10, 0, 0);
arm.add(mesh);
arm2 = arm.clone();
arm.add(arm2);
/* var gridXZ = new THREE.GridHelper(100, 10);
gridXZ.setColors(new THREE.Color(0xff0000), new THREE.Color(0xffffff));
scene.add(gridXZ);
gridXZ.rotation.x = Math.PI / 2;
*/
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0x888888);
document.body.appendChild(renderer.domElement);
computeArmOBB();
scene.add(obbLine);
}
function computeArmOBB() {
// prepare data for OBB
var points = [];
if (obbLine) scene.remove(obbLine);
points.push(arm2.children[0].localToWorld(new THREE.Vector3(10,2.5,0)));
points.push(arm2.children[0].localToWorld(new THREE.Vector3(10,-2.5,0)));
points.push(arm2.children[0].localToWorld(new THREE.Vector3(-10,-2.5,0)));
points.push(arm2.children[0].localToWorld(new THREE.Vector3(-10,2.5,0)));
points.push(arm.children[0].localToWorld(new THREE.Vector3(10,2.5,0)));
points.push(arm.children[0].localToWorld(new THREE.Vector3(10,-2.5,0)));
points.push(arm.children[0].localToWorld(new THREE.Vector3(-10,-2.5,0)));
points.push(arm.children[0].localToWorld(new THREE.Vector3(-10,2.5,0)));
var obb = findOBB(points);
console.log(obb);
obbLine = drawOBB(obb);
}
function...