59 lines
1.2 KiB
JavaScript
Executable File
59 lines
1.2 KiB
JavaScript
Executable File
/*
|
|
* Copyright 2013, kaj dijkstra ,
|
|
* Author, Kaj Dijkstra.
|
|
* All rights reserved.
|
|
*
|
|
*/
|
|
import {matrix3, vector3} from './math.js';
|
|
|
|
/**
|
|
* Boundingbox
|
|
**/
|
|
class boundingBox {
|
|
maxExtent = [0, 0, 0];
|
|
minExtent = [0, 0, 0];
|
|
intersectionVector;
|
|
|
|
/**
|
|
* make boundingbox as big as point cloud
|
|
* @param {(array)} points
|
|
**/
|
|
fitBoxToPoints_( points, rotationMatrix ) {
|
|
|
|
var minVector;
|
|
|
|
for (var index = 0; index < 3; ++index) {
|
|
|
|
this.maxExtent[index] = this.minExtent[index] = points[index];
|
|
|
|
for (var i = 1; i < points.length / 3; ++i) {
|
|
|
|
|
|
var point = [points[i * 3], points[(i * 3) + 1], points[(i * 3) + 2]] ;
|
|
|
|
if(rotationMatrix){
|
|
var translation = rotationMatrix[3];
|
|
|
|
if(translation) {
|
|
point = vector3.add([translation[0], translation[1], translation[2]], point);
|
|
}
|
|
|
|
point = matrix3.transformPoint(rotationMatrix, point);
|
|
|
|
|
|
}
|
|
//if(this.minExtent[index] > point[i] && index == 1)
|
|
//var minVector = point;
|
|
|
|
this.minExtent[index] = Math.min(this.minExtent[index], point[index]);
|
|
this.maxExtent[index] = Math.max(this.maxExtent[index], point[index]);
|
|
}
|
|
}
|
|
|
|
this.intersectionVector = minVector;
|
|
|
|
this.valid = true;
|
|
}
|
|
}
|
|
|
|
export {boundingBox as default}; |