2.8 KiB
2.8 KiB
Capability: noise-functions
ADDED Requirements
Package identity
- REQ-NOISE-001: Package name
@suaveplan/noise,packages/universal/noise. - REQ-NOISE-002: Runtime deps:
@suaveplan/error,tslib. Zero PRNG deps — noise uses its own internal seeded hash permutation tables. - REQ-NOISE-003:
"sideEffects": false.
Output contract
- REQ-NOISE-010: All noise functions return values normalised to
[-1, 1]except Worley which returns[0, 1]distance values. - REQ-NOISE-011: All noise functions accept
seed: numberas first parameter. Same seed + same coordinates always returns same value.
Perlin noise
- REQ-NOISE-020: Exports
perlin2(seed: number, x: number, y: number): number. - REQ-NOISE-021: Exports
perlin3(seed: number, x: number, y: number, z: number): number.
Simplex noise
- REQ-NOISE-030: Exports
simplex2(seed: number, x: number, y: number): number. - REQ-NOISE-031: Exports
simplex3(seed: number, x: number, y: number, z: number): number. - REQ-NOISE-032: Exports
simplex4(seed: number, x: number, y: number, z: number, w: number): number.
Value noise
- REQ-NOISE-040: Exports
value2(seed: number, x: number, y: number): number. - REQ-NOISE-041: Exports
value3(seed: number, x: number, y: number, z: number): number.
Worley / cell noise
- REQ-NOISE-050: Exports
WorleyMode = "F1" | "F2" | "F1-F2". - REQ-NOISE-051: Exports
worley2(seed: number, x: number, y: number, mode?: WorleyMode): number. Default mode"F1". - REQ-NOISE-052: Exports
worley3(seed: number, x: number, y: number, z: number, mode?: WorleyMode): number.
Fractional Brownian Motion
- REQ-NOISE-060: Exports
FbmOptions = { octaves?: number; lacunarity?: number; gain?: number }. Defaults:octaves=6, lacunarity=2.0, gain=0.5. - REQ-NOISE-061: Exports
fbm2(noiseFn: (seed, x, y) => number, seed: number, x: number, y: number, opts?: FbmOptions): number. - REQ-NOISE-062: Exports
fbm3(noiseFn: (seed, x, y, z) => number, seed: number, x: number, y: number, z: number, opts?: FbmOptions): number.
Blue noise / Poisson disk sampling
- REQ-NOISE-070: Exports
blueNoiseSample(width: number, height: number, minDistance: number, opts?: { seed?: number; rng?: Rng; maxSamples?: number }): [number, number][]. - REQ-NOISE-071: Uses Bridson's algorithm. Default
maxSamples = 100_000; throwsNoiseError("NOISE.BLUE.SAMPLE_LIMIT_EXCEEDED")if exceeded.
Error surface
- REQ-NOISE-080: Exports
NoiseError extends SuaveplanError<NoiseCode>. - REQ-NOISE-081: Codes:
NOISE.BLUE.SAMPLE_LIMIT_EXCEEDED,NOISE.FBM.INVALID_OCTAVES.
Quality
- REQ-NOISE-090: 100% statement + branch coverage.
- REQ-NOISE-091: fast-check: determinism (same seed+coords → same output), output range
[-1,1](or[0,1]for Worley). - REQ-NOISE-092: mitata benchmarks: each function at 1k and 100k evaluations.