First commit
This commit is contained in:
59
engine/boundingBox.js
Executable file
59
engine/boundingBox.js
Executable file
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* 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};
|
||||
Reference in New Issue
Block a user