@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
31 lines • 3.28 kB
JavaScript
import { TgdVec3 } from "./../math/index.js";
/**
* Compute the bounding box of a Dataset.
* @param dataset
* @param attPositionName Name of an atttribute of type `vec3` holding the vertices positions.
* @param minVector If specified, it will hold the min bounding box value.
* @param maxVector If specified, it will hold the max bounding box value.
* @returns
*/
export function tgdComputeBoundingBox3D(dataset, attPositionName = "POSITION", minVector, maxVector) {
const { get } = dataset
.assertAttribType(attPositionName, "vec3", "vec4")
.getAttribAccessor(attPositionName);
const min = minVector !== null && minVector !== void 0 ? minVector : new TgdVec3();
min.reset(get(0, 0), get(0, 1), get(0, 2));
const max = maxVector !== null && maxVector !== void 0 ? maxVector : new TgdVec3();
max.from(min);
for (let index = 1; index < dataset.count; index++) {
const x = get(index, 0);
const y = get(index, 1);
const z = get(index, 2);
min.x = Math.min(min.x, x);
max.x = Math.max(max.x, x);
min.y = Math.min(min.y, y);
max.y = Math.max(max.y, y);
min.z = Math.min(min.z, z);
max.z = Math.max(max.z, z);
}
return { min, max };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9iYm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFbkM7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FDbkMsT0FBNkIsRUFDN0IsZUFBZSxHQUFHLFVBQVUsRUFDNUIsU0FBbUIsRUFDbkIsU0FBbUI7SUFLbkIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU87U0FDbEIsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7U0FDakQsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDdkMsTUFBTSxHQUFHLEdBQUcsU0FBUyxhQUFULFNBQVMsY0FBVCxTQUFTLEdBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQTtJQUN0QyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDMUMsTUFBTSxHQUFHLEdBQUcsU0FBUyxhQUFULFNBQVMsY0FBVCxTQUFTLEdBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQTtJQUN0QyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2IsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNqRCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ3ZCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDdkIsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN2QixHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUMxQixHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUMxQixHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUMxQixHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUMxQixHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUMxQixHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQTtBQUN2QixDQUFDIn0=