Files
Kepler/engine/boundingBox.js

59 lines
1.2 KiB
JavaScript
Raw Permalink Normal View History

2025-11-17 17:18:43 +01:00
/*
* 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};