1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import { __decorate } from "../tslib.es6.js";
- import { Vector3 } from "./math.vector.js";
- import { nativeOverride } from "../Misc/decorators.js";
- // This helper class is only here so we can apply the nativeOverride decorator to functions.
- class MathHelpers {
- static extractMinAndMaxIndexed(positions, indices, indexStart, indexCount, minimum, maximum) {
- for (let index = indexStart; index < indexStart + indexCount; index++) {
- const offset = indices[index] * 3;
- const x = positions[offset];
- const y = positions[offset + 1];
- const z = positions[offset + 2];
- minimum.minimizeInPlaceFromFloats(x, y, z);
- maximum.maximizeInPlaceFromFloats(x, y, z);
- }
- }
- static extractMinAndMax(positions, start, count, stride, minimum, maximum) {
- for (let index = start, offset = start * stride; index < start + count; index++, offset += stride) {
- const x = positions[offset];
- const y = positions[offset + 1];
- const z = positions[offset + 2];
- minimum.minimizeInPlaceFromFloats(x, y, z);
- maximum.maximizeInPlaceFromFloats(x, y, z);
- }
- }
- }
- __decorate([
- nativeOverride.filter((...[positions, indices]) => !Array.isArray(positions) && !Array.isArray(indices))
- // eslint-disable-next-line @typescript-eslint/naming-convention
- ], MathHelpers, "extractMinAndMaxIndexed", null);
- __decorate([
- nativeOverride.filter((...[positions]) => !Array.isArray(positions))
- // eslint-disable-next-line @typescript-eslint/naming-convention
- ], MathHelpers, "extractMinAndMax", null);
- /**
- * Extracts minimum and maximum values from a list of indexed positions
- * @param positions defines the positions to use
- * @param indices defines the indices to the positions
- * @param indexStart defines the start index
- * @param indexCount defines the end index
- * @param bias defines bias value to add to the result
- * @returns minimum and maximum values
- */
- export function extractMinAndMaxIndexed(positions, indices, indexStart, indexCount, bias = null) {
- const minimum = new Vector3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
- const maximum = new Vector3(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
- MathHelpers.extractMinAndMaxIndexed(positions, indices, indexStart, indexCount, minimum, maximum);
- if (bias) {
- minimum.x -= minimum.x * bias.x + bias.y;
- minimum.y -= minimum.y * bias.x + bias.y;
- minimum.z -= minimum.z * bias.x + bias.y;
- maximum.x += maximum.x * bias.x + bias.y;
- maximum.y += maximum.y * bias.x + bias.y;
- maximum.z += maximum.z * bias.x + bias.y;
- }
- return {
- minimum: minimum,
- maximum: maximum,
- };
- }
- /**
- * Extracts minimum and maximum values from a list of positions
- * @param positions defines the positions to use
- * @param start defines the start index in the positions array
- * @param count defines the number of positions to handle
- * @param bias defines bias value to add to the result
- * @param stride defines the stride size to use (distance between two positions in the positions array)
- * @returns minimum and maximum values
- */
- export function extractMinAndMax(positions, start, count, bias = null, stride) {
- const minimum = new Vector3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
- const maximum = new Vector3(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
- if (!stride) {
- stride = 3;
- }
- MathHelpers.extractMinAndMax(positions, start, count, stride, minimum, maximum);
- if (bias) {
- minimum.x -= minimum.x * bias.x + bias.y;
- minimum.y -= minimum.y * bias.x + bias.y;
- minimum.z -= minimum.z * bias.x + bias.y;
- maximum.x += maximum.x * bias.x + bias.y;
- maximum.y += maximum.y * bias.x + bias.y;
- maximum.z += maximum.z * bias.x + bias.y;
- }
- return {
- minimum: minimum,
- maximum: maximum,
- };
- }
- //# sourceMappingURL=math.functions.js.map
|