@photivra/engine 1.5.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +393 -6
- package/CITATION.cff +1 -1
- package/NODE_SUPPORT.md +64 -12
- package/README.md +301 -182
- package/SECURITY.md +37 -28
- package/THIRD_PARTY.md +148 -4
- package/dist/camera/equivalent-focal-length.d.ts +13 -14
- package/dist/camera/equivalent-focal-length.js +15 -13
- package/dist/camera/equivalent-focal-length.js.map +1 -1
- package/dist/camera/field-of-view.d.ts +30 -19
- package/dist/camera/field-of-view.js +67 -18
- package/dist/camera/field-of-view.js.map +1 -1
- package/dist/camera/lens-projection.d.ts +170 -0
- package/dist/camera/lens-projection.js +444 -0
- package/dist/camera/lens-projection.js.map +1 -0
- package/dist/camera/projected-object-size.d.ts +10 -11
- package/dist/camera/projected-object-size.js +12 -10
- package/dist/camera/projected-object-size.js.map +1 -1
- package/dist/capture/capture-export-metadata.d.ts +9 -10
- package/dist/capture/capture-export-metadata.js +8 -5
- package/dist/capture/capture-export-metadata.js.map +1 -1
- package/dist/capture/dng-import.d.ts +91 -0
- package/dist/capture/dng-import.js +343 -0
- package/dist/capture/dng-import.js.map +1 -0
- package/dist/capture/environment-raw-producer.d.ts +37 -17
- package/dist/capture/environment-raw-producer.js +43 -19
- package/dist/capture/environment-raw-producer.js.map +1 -1
- package/dist/capture/export-jpeg.d.ts +35 -4
- package/dist/capture/export-jpeg.js +133 -47
- package/dist/capture/export-jpeg.js.map +1 -1
- package/dist/capture/export-tiff.d.ts +48 -24
- package/dist/capture/export-tiff.js +91 -31
- package/dist/capture/export-tiff.js.map +1 -1
- package/dist/capture/focus-control.d.ts +42 -65
- package/dist/capture/focus-control.js +56 -75
- package/dist/capture/focus-control.js.map +1 -1
- package/dist/capture/host-yield-cadence.d.ts +25 -0
- package/dist/capture/host-yield-cadence.js +25 -0
- package/dist/capture/host-yield-cadence.js.map +1 -0
- package/dist/capture/linear-encoding.d.ts +14 -12
- package/dist/capture/linear-encoding.js +14 -13
- package/dist/capture/linear-encoding.js.map +1 -1
- package/dist/capture/lossless-jpeg.d.ts +27 -0
- package/dist/capture/lossless-jpeg.js +237 -0
- package/dist/capture/lossless-jpeg.js.map +1 -0
- package/dist/capture/native-environment-lean.d.ts +227 -0
- package/dist/capture/native-environment-lean.js +974 -0
- package/dist/capture/native-environment-lean.js.map +1 -0
- package/dist/capture/native-environment-optical-stage.d.ts +97 -0
- package/dist/capture/native-environment-optical-stage.js +340 -0
- package/dist/capture/native-environment-optical-stage.js.map +1 -0
- package/dist/capture/native-environment-raw.d.ts +140 -6
- package/dist/capture/native-environment-raw.js +435 -34
- package/dist/capture/native-environment-raw.js.map +1 -1
- package/dist/capture/native-raw-development.d.ts +116 -9
- package/dist/capture/native-raw-development.js +221 -62
- package/dist/capture/native-raw-development.js.map +1 -1
- package/dist/capture/native-raw-dng.d.ts +60 -0
- package/dist/capture/native-raw-dng.js +167 -0
- package/dist/capture/native-raw-dng.js.map +1 -0
- package/dist/capture/native-raw.d.ts +65 -12
- package/dist/capture/native-raw.js +81 -19
- package/dist/capture/native-raw.js.map +1 -1
- package/dist/capture/packed-sensor-raw.d.ts +160 -0
- package/dist/capture/packed-sensor-raw.js +221 -0
- package/dist/capture/packed-sensor-raw.js.map +1 -0
- package/dist/capture/photographic-export.d.ts +58 -35
- package/dist/capture/photographic-export.js +177 -70
- package/dist/capture/photographic-export.js.map +1 -1
- package/dist/capture/raw-development-kernel.d.ts +52 -0
- package/dist/capture/raw-development-kernel.js +88 -0
- package/dist/capture/raw-development-kernel.js.map +1 -0
- package/dist/capture/raw-frame-limits.d.ts +7 -7
- package/dist/capture/raw-frame-limits.js +7 -6
- package/dist/capture/raw-frame-limits.js.map +1 -1
- package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
- package/dist/capture/raw-frame-reconstruction.js +9 -8
- package/dist/capture/raw-frame-reconstruction.js.map +1 -1
- package/dist/capture/raw-white-level.d.ts +55 -0
- package/dist/capture/raw-white-level.js +165 -0
- package/dist/capture/raw-white-level.js.map +1 -0
- package/dist/capture/release-sequence.d.ts +5 -7
- package/dist/capture/release-sequence.js +15 -13
- package/dist/capture/release-sequence.js.map +1 -1
- package/dist/capture/sensor-raw-frame.d.ts +5 -6
- package/dist/capture/sensor-raw-frame.js +26 -9
- package/dist/capture/sensor-raw-frame.js.map +1 -1
- package/dist/capture/sensor-raw-producer.d.ts +21 -13
- package/dist/capture/sensor-raw-producer.js +86 -25
- package/dist/capture/sensor-raw-producer.js.map +1 -1
- package/dist/capture/simulated-capture.d.ts +15 -16
- package/dist/capture/simulated-capture.js +22 -12
- package/dist/capture/simulated-capture.js.map +1 -1
- package/dist/color/camera-color-matrix.d.ts +69 -0
- package/dist/color/camera-color-matrix.js +132 -0
- package/dist/color/camera-color-matrix.js.map +1 -0
- package/dist/color/capture-color.d.ts +17 -10
- package/dist/color/capture-color.js +50 -17
- package/dist/color/capture-color.js.map +1 -1
- package/dist/color/chromatic-adaptation.d.ts +63 -0
- package/dist/color/chromatic-adaptation.js +91 -0
- package/dist/color/chromatic-adaptation.js.map +1 -0
- package/dist/color/color-difference.d.ts +104 -0
- package/dist/color/color-difference.js +205 -0
- package/dist/color/color-difference.js.map +1 -0
- package/dist/color/color-matching-functions.d.ts +168 -0
- package/dist/color/color-matching-functions.js +309 -0
- package/dist/color/color-matching-functions.js.map +1 -0
- package/dist/color/colorimetry-math.d.ts +52 -0
- package/dist/color/colorimetry-math.js +144 -0
- package/dist/color/colorimetry-math.js.map +1 -0
- package/dist/color/gamut-mapping.d.ts +54 -0
- package/dist/color/gamut-mapping.js +107 -0
- package/dist/color/gamut-mapping.js.map +1 -0
- package/dist/color/illuminants.d.ts +182 -0
- package/dist/color/illuminants.js +434 -0
- package/dist/color/illuminants.js.map +1 -0
- package/dist/color/rgb-color-spaces.d.ts +79 -0
- package/dist/color/rgb-color-spaces.js +115 -0
- package/dist/color/rgb-color-spaces.js.map +1 -0
- package/dist/color/sensor-color-development.d.ts +33 -11
- package/dist/color/sensor-color-development.js +104 -30
- package/dist/color/sensor-color-development.js.map +1 -1
- package/dist/color/srgb-icc.d.ts +9 -2
- package/dist/color/srgb-icc.js +16 -5
- package/dist/color/srgb-icc.js.map +1 -1
- package/dist/color/srgb-transfer.d.ts +1 -2
- package/dist/color/srgb-transfer.js +1 -1
- package/dist/color/srgb-transfer.js.map +1 -1
- package/dist/color/white-balance.d.ts +68 -19
- package/dist/color/white-balance.js +168 -35
- package/dist/color/white-balance.js.map +1 -1
- package/dist/composition/image-formation-plan.d.ts +152 -128
- package/dist/composition/image-formation-plan.js +292 -138
- package/dist/composition/image-formation-plan.js.map +1 -1
- package/dist/composition/plan-consumer.d.ts +6 -7
- package/dist/composition/plan-consumer.js +14 -11
- package/dist/composition/plan-consumer.js.map +1 -1
- package/dist/core/calculation-result.d.ts +21 -14
- package/dist/core/calculation-result.js +209 -11
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/canonical-json.d.ts +13 -8
- package/dist/core/canonical-json.js +34 -15
- package/dist/core/canonical-json.js.map +1 -1
- package/dist/core/configuration-error.d.ts +5 -4
- package/dist/core/configuration-error.js +5 -3
- package/dist/core/configuration-error.js.map +1 -1
- package/dist/core/evidence-provenance.d.ts +12 -12
- package/dist/core/evidence-provenance.js +10 -9
- package/dist/core/evidence-provenance.js.map +1 -1
- package/dist/core/image-formation.d.ts +11 -10
- package/dist/core/image-formation.js +11 -9
- package/dist/core/image-formation.js.map +1 -1
- package/dist/core/owned-data.d.ts +9 -17
- package/dist/core/owned-data.js +9 -16
- package/dist/core/owned-data.js.map +1 -1
- package/dist/core/portable-math.d.ts +15 -0
- package/dist/core/portable-math.js +56 -0
- package/dist/core/portable-math.js.map +1 -0
- package/dist/core/record-validation.d.ts +48 -9
- package/dist/core/record-validation.js +93 -19
- package/dist/core/record-validation.js.map +1 -1
- package/dist/core/scientific-assurance.d.ts +16 -14
- package/dist/core/scientific-assurance.js +22 -18
- package/dist/core/scientific-assurance.js.map +1 -1
- package/dist/core/spectral-composition.d.ts +13 -14
- package/dist/core/spectral-composition.js +30 -27
- package/dist/core/spectral-composition.js.map +1 -1
- package/dist/core/spectral.d.ts +5 -6
- package/dist/core/spectral.js +9 -7
- package/dist/core/spectral.js.map +1 -1
- package/dist/core/validation.d.ts +3 -6
- package/dist/core/validation.js +3 -5
- package/dist/core/validation.js.map +1 -1
- package/dist/core/version.d.ts +6 -6
- package/dist/core/version.js +6 -5
- package/dist/core/version.js.map +1 -1
- package/dist/equipment/exposure-capabilities.d.ts +10 -10
- package/dist/equipment/exposure-capabilities.js +40 -30
- package/dist/equipment/exposure-capabilities.js.map +1 -1
- package/dist/equipment/generic-tier-assets.d.ts +13 -6
- package/dist/equipment/generic-tier-assets.js +34 -15
- package/dist/equipment/generic-tier-assets.js.map +1 -1
- package/dist/equipment/generic-tier-presets.d.ts +5 -6
- package/dist/equipment/generic-tier-presets.js +15 -13
- package/dist/equipment/generic-tier-presets.js.map +1 -1
- package/dist/equipment/iso-capabilities.d.ts +21 -22
- package/dist/equipment/iso-capabilities.js +49 -44
- package/dist/equipment/iso-capabilities.js.map +1 -1
- package/dist/equipment/metering-capabilities.d.ts +5 -6
- package/dist/equipment/metering-capabilities.js +22 -19
- package/dist/equipment/metering-capabilities.js.map +1 -1
- package/dist/equipment/release-capabilities.d.ts +3 -4
- package/dist/equipment/release-capabilities.js +18 -14
- package/dist/equipment/release-capabilities.js.map +1 -1
- package/dist/exposure/exposure-duration-control.d.ts +19 -17
- package/dist/exposure/exposure-duration-control.js +27 -23
- package/dist/exposure/exposure-duration-control.js.map +1 -1
- package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
- package/dist/exposure/exposure-mode-resolver.js +127 -82
- package/dist/exposure/exposure-mode-resolver.js.map +1 -1
- package/dist/exposure/exposure.d.ts +17 -16
- package/dist/exposure/exposure.js +22 -15
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/exposure/flash-ttl.d.ts +135 -0
- package/dist/exposure/flash-ttl.js +193 -0
- package/dist/exposure/flash-ttl.js.map +1 -0
- package/dist/exposure/flash.d.ts +144 -36
- package/dist/exposure/flash.js +259 -59
- package/dist/exposure/flash.js.map +1 -1
- package/dist/exposure/metering-scene-radiance.d.ts +10 -10
- package/dist/exposure/metering-scene-radiance.js +42 -23
- package/dist/exposure/metering-scene-radiance.js.map +1 -1
- package/dist/exposure/metering-target.d.ts +8 -8
- package/dist/exposure/metering-target.js +30 -20
- package/dist/exposure/metering-target.js.map +1 -1
- package/dist/exposure/metering-temporal.d.ts +16 -15
- package/dist/exposure/metering-temporal.js +41 -19
- package/dist/exposure/metering-temporal.js.map +1 -1
- package/dist/exposure/metering.d.ts +64 -17
- package/dist/exposure/metering.js +159 -30
- package/dist/exposure/metering.js.map +1 -1
- package/dist/exposure/program-line.d.ts +5 -5
- package/dist/exposure/program-line.js +20 -13
- package/dist/exposure/program-line.js.map +1 -1
- package/dist/facade/camera-preset.d.ts +8 -0
- package/dist/facade/camera-preset.js +102 -0
- package/dist/facade/camera-preset.js.map +1 -0
- package/dist/facade/chart-radiance-batch.d.ts +57 -0
- package/dist/facade/chart-radiance-batch.js +121 -0
- package/dist/facade/chart-radiance-batch.js.map +1 -0
- package/dist/facade/chart-scenes.d.ts +177 -0
- package/dist/facade/chart-scenes.js +232 -0
- package/dist/facade/chart-scenes.js.map +1 -0
- package/dist/facade/host-yield.d.ts +7 -0
- package/dist/facade/host-yield.js +23 -0
- package/dist/facade/host-yield.js.map +1 -0
- package/dist/facade/scene-radiance.d.ts +117 -0
- package/dist/facade/scene-radiance.js +205 -0
- package/dist/facade/scene-radiance.js.map +1 -0
- package/dist/facade/simulate-capture.d.ts +284 -0
- package/dist/facade/simulate-capture.js +1026 -0
- package/dist/facade/simulate-capture.js.map +1 -0
- package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
- package/dist/gpu/chart-radiance-gpu.js +176 -0
- package/dist/gpu/chart-radiance-gpu.js.map +1 -0
- package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
- package/dist/gpu/image-kernel-accelerator.js +720 -0
- package/dist/gpu/image-kernel-accelerator.js.map +1 -0
- package/dist/gpu/image-kernel-execution.d.ts +92 -0
- package/dist/gpu/image-kernel-execution.js +84 -0
- package/dist/gpu/image-kernel-execution.js.map +1 -0
- package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
- package/dist/gpu/sensor-stage-gpu.js +317 -0
- package/dist/gpu/sensor-stage-gpu.js.map +1 -0
- package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
- package/dist/gpu/temporal-sum-gpu.js +150 -0
- package/dist/gpu/temporal-sum-gpu.js.map +1 -0
- package/dist/gpu/webgpu-runtime.d.ts +63 -0
- package/dist/gpu/webgpu-runtime.js +215 -0
- package/dist/gpu/webgpu-runtime.js.map +1 -0
- package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
- package/dist/gpu/wgsl-chart-kernel.js +165 -0
- package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
- package/dist/gpu/wgsl-kernels.d.ts +53 -0
- package/dist/gpu/wgsl-kernels.js +365 -0
- package/dist/gpu/wgsl-kernels.js.map +1 -0
- package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
- package/dist/gpu/wgsl-sensor-kernel.js +409 -0
- package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
- package/dist/index.d.ts +89 -25
- package/dist/index.js +59 -15
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +92 -40
- package/dist/motion/camera-rotation.js +84 -47
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
- package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
- package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
- package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
- package/dist/motion/capture-rotation-trajectory.js +36 -26
- package/dist/motion/capture-rotation-trajectory.js.map +1 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
- package/dist/motion/extended-object-projection.d.ts +19 -16
- package/dist/motion/extended-object-projection.js +38 -18
- package/dist/motion/extended-object-projection.js.map +1 -1
- package/dist/motion/projected-motion.d.ts +18 -17
- package/dist/motion/projected-motion.js +25 -17
- package/dist/motion/projected-motion.js.map +1 -1
- package/dist/motion/temporal-exposure-sum.d.ts +55 -0
- package/dist/motion/temporal-exposure-sum.js +141 -0
- package/dist/motion/temporal-exposure-sum.js.map +1 -0
- package/dist/motion/video-sequence.d.ts +111 -0
- package/dist/motion/video-sequence.js +179 -0
- package/dist/motion/video-sequence.js.map +1 -0
- package/dist/optics/aperture.d.ts +14 -15
- package/dist/optics/aperture.js +13 -11
- package/dist/optics/aperture.js.map +1 -1
- package/dist/optics/atmospheric-haze.d.ts +83 -0
- package/dist/optics/atmospheric-haze.js +113 -0
- package/dist/optics/atmospheric-haze.js.map +1 -0
- package/dist/optics/brown-conrady-distortion.d.ts +116 -0
- package/dist/optics/brown-conrady-distortion.js +291 -0
- package/dist/optics/brown-conrady-distortion.js.map +1 -0
- package/dist/optics/circle-of-confusion.d.ts +10 -10
- package/dist/optics/circle-of-confusion.js +15 -11
- package/dist/optics/circle-of-confusion.js.map +1 -1
- package/dist/optics/complex-pupil-psf.d.ts +64 -33
- package/dist/optics/complex-pupil-psf.js +190 -98
- package/dist/optics/complex-pupil-psf.js.map +1 -1
- package/dist/optics/depth-of-field.d.ts +25 -15
- package/dist/optics/depth-of-field.js +67 -27
- package/dist/optics/depth-of-field.js.map +1 -1
- package/dist/optics/diffraction.d.ts +14 -13
- package/dist/optics/diffraction.js +14 -10
- package/dist/optics/diffraction.js.map +1 -1
- package/dist/optics/focus-breathing.d.ts +88 -27
- package/dist/optics/focus-breathing.js +114 -23
- package/dist/optics/focus-breathing.js.map +1 -1
- package/dist/optics/focus-state.d.ts +18 -18
- package/dist/optics/focus-state.js +21 -15
- package/dist/optics/focus-state.js.map +1 -1
- package/dist/optics/front-of-lens-filter.d.ts +45 -14
- package/dist/optics/front-of-lens-filter.js +259 -88
- package/dist/optics/front-of-lens-filter.js.map +1 -1
- package/dist/optics/illumination-vignetting.d.ts +16 -17
- package/dist/optics/illumination-vignetting.js +40 -17
- package/dist/optics/illumination-vignetting.js.map +1 -1
- package/dist/optics/irradiance-convolution.d.ts +59 -0
- package/dist/optics/irradiance-convolution.js +138 -0
- package/dist/optics/irradiance-convolution.js.map +1 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
- package/dist/optics/lateral-chromatic-aberration.js +33 -23
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
- package/dist/optics/lens-psf-kernels.d.ts +89 -0
- package/dist/optics/lens-psf-kernels.js +175 -0
- package/dist/optics/lens-psf-kernels.js.map +1 -0
- package/dist/optics/lens-psf-profile.d.ts +78 -46
- package/dist/optics/lens-psf-profile.js +335 -124
- package/dist/optics/lens-psf-profile.js.map +1 -1
- package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
- package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
- package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
- package/dist/optics/polygon-diffraction.d.ts +80 -23
- package/dist/optics/polygon-diffraction.js +130 -25
- package/dist/optics/polygon-diffraction.js.map +1 -1
- package/dist/optics/profile-contract.d.ts +5 -6
- package/dist/optics/profile-contract.js +14 -11
- package/dist/optics/profile-contract.js.map +1 -1
- package/dist/optics/psf-foundation.d.ts +23 -23
- package/dist/optics/psf-foundation.js +24 -21
- package/dist/optics/psf-foundation.js.map +1 -1
- package/dist/optics/pupil-vignetting.d.ts +118 -0
- package/dist/optics/pupil-vignetting.js +264 -0
- package/dist/optics/pupil-vignetting.js.map +1 -0
- package/dist/optics/radial-distortion.d.ts +34 -33
- package/dist/optics/radial-distortion.js +37 -30
- package/dist/optics/radial-distortion.js.map +1 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
- package/dist/optics/scene-to-sensor-irradiance.js +73 -45
- package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
- package/dist/optics/scene-to-sensor-quadrature.js +16 -11
- package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
- package/dist/optics/sensor-aperture-rays.d.ts +20 -4
- package/dist/optics/sensor-aperture-rays.js +32 -14
- package/dist/optics/sensor-aperture-rays.js.map +1 -1
- package/dist/optics/sensor-environment-query.d.ts +81 -16
- package/dist/optics/sensor-environment-query.js +145 -12
- package/dist/optics/sensor-environment-query.js.map +1 -1
- package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
- package/dist/optics/sensor-psf-quadrature.js +18 -11
- package/dist/optics/sensor-psf-quadrature.js.map +1 -1
- package/dist/optics/sensor-psf-support.d.ts +8 -6
- package/dist/optics/sensor-psf-support.js +8 -5
- package/dist/optics/sensor-psf-support.js.map +1 -1
- package/dist/optics/stray-light.d.ts +22 -19
- package/dist/optics/stray-light.js +18 -12
- package/dist/optics/stray-light.js.map +1 -1
- package/dist/optics/thin-lens.d.ts +10 -9
- package/dist/optics/thin-lens.js +12 -8
- package/dist/optics/thin-lens.js.map +1 -1
- package/dist/optics/zernike-wavefront.d.ts +154 -0
- package/dist/optics/zernike-wavefront.js +352 -0
- package/dist/optics/zernike-wavefront.js.map +1 -0
- package/dist/output/capture-corrected-sdr.d.ts +16 -8
- package/dist/output/capture-corrected-sdr.js +16 -8
- package/dist/output/capture-corrected-sdr.js.map +1 -1
- package/dist/output/capture-geometry.d.ts +34 -36
- package/dist/output/capture-geometry.js +52 -32
- package/dist/output/capture-geometry.js.map +1 -1
- package/dist/output/capture-sdr.d.ts +7 -6
- package/dist/output/capture-sdr.js +11 -8
- package/dist/output/capture-sdr.js.map +1 -1
- package/dist/output/crop.d.ts +22 -6
- package/dist/output/crop.js +40 -6
- package/dist/output/crop.js.map +1 -1
- package/dist/output/geometric-transforms.d.ts +60 -23
- package/dist/output/geometric-transforms.js +111 -24
- package/dist/output/geometric-transforms.js.map +1 -1
- package/dist/output/lens-corrections.d.ts +27 -19
- package/dist/output/lens-corrections.js +29 -13
- package/dist/output/lens-corrections.js.map +1 -1
- package/dist/output/native-capture-sdr.d.ts +71 -16
- package/dist/output/native-capture-sdr.js +190 -33
- package/dist/output/native-capture-sdr.js.map +1 -1
- package/dist/output/png-encoder.d.ts +65 -0
- package/dist/output/png-encoder.js +461 -0
- package/dist/output/png-encoder.js.map +1 -0
- package/dist/output/print-contrast-reference.d.ts +10 -9
- package/dist/output/print-contrast-reference.js +10 -8
- package/dist/output/print-contrast-reference.js.map +1 -1
- package/dist/output/print-detail.d.ts +18 -17
- package/dist/output/print-detail.js +12 -10
- package/dist/output/print-detail.js.map +1 -1
- package/dist/output/print-jpeg.d.ts +26 -5
- package/dist/output/print-jpeg.js +117 -50
- package/dist/output/print-jpeg.js.map +1 -1
- package/dist/output/print-plan.d.ts +19 -19
- package/dist/output/print-plan.js +11 -10
- package/dist/output/print-plan.js.map +1 -1
- package/dist/output/print-region-statistics.d.ts +14 -15
- package/dist/output/print-region-statistics.js +11 -11
- package/dist/output/print-region-statistics.js.map +1 -1
- package/dist/output/sdr-rendering.d.ts +48 -10
- package/dist/output/sdr-rendering.js +114 -25
- package/dist/output/sdr-rendering.js.map +1 -1
- package/dist/output/subject-framing-crop.d.ts +6 -10
- package/dist/output/subject-framing-crop.js +23 -13
- package/dist/output/subject-framing-crop.js.map +1 -1
- package/dist/processing/demosaic.d.ts +90 -0
- package/dist/processing/demosaic.js +275 -0
- package/dist/processing/demosaic.js.map +1 -0
- package/dist/processing/denoise.d.ts +68 -0
- package/dist/processing/denoise.js +214 -0
- package/dist/processing/denoise.js.map +1 -0
- package/dist/processing/focus-stacking.d.ts +17 -0
- package/dist/processing/focus-stacking.js +80 -0
- package/dist/processing/focus-stacking.js.map +1 -0
- package/dist/processing/hdr.d.ts +54 -0
- package/dist/processing/hdr.js +172 -0
- package/dist/processing/hdr.js.map +1 -0
- package/dist/processing/image-ops.d.ts +66 -0
- package/dist/processing/image-ops.js +192 -0
- package/dist/processing/image-ops.js.map +1 -0
- package/dist/processing/panorama.d.ts +51 -0
- package/dist/processing/panorama.js +305 -0
- package/dist/processing/panorama.js.map +1 -0
- package/dist/processing/processing-task.d.ts +85 -0
- package/dist/processing/processing-task.js +164 -0
- package/dist/processing/processing-task.js.map +1 -0
- package/dist/processing/tone-mapping.d.ts +69 -0
- package/dist/processing/tone-mapping.js +310 -0
- package/dist/processing/tone-mapping.js.map +1 -0
- package/dist/schema/camera.d.ts +5 -4
- package/dist/schema/illumination-spectral.d.ts +13 -19
- package/dist/schema/illumination-spectral.js +23 -19
- package/dist/schema/illumination-spectral.js.map +1 -1
- package/dist/schema/illumination-temporal.d.ts +12 -15
- package/dist/schema/illumination-temporal.js +43 -28
- package/dist/schema/illumination-temporal.js.map +1 -1
- package/dist/schema/illumination.d.ts +5 -4
- package/dist/schema/illumination.js +55 -20
- package/dist/schema/illumination.js.map +1 -1
- package/dist/schema/scene-radiance-temporal.d.ts +9 -11
- package/dist/schema/scene-radiance-temporal.js +26 -23
- package/dist/schema/scene-radiance-temporal.js.map +1 -1
- package/dist/schema/scene-radiance.d.ts +17 -17
- package/dist/schema/scene-radiance.js +56 -34
- package/dist/schema/scene-radiance.js.map +1 -1
- package/dist/schema/scene.d.ts +14 -13
- package/dist/schema/validation.d.ts +0 -1
- package/dist/schema/validation.js +17 -15
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/accumulated-charge.d.ts +45 -64
- package/dist/sensor/accumulated-charge.js +41 -47
- package/dist/sensor/accumulated-charge.js.map +1 -1
- package/dist/sensor/architecture.d.ts +22 -25
- package/dist/sensor/architecture.js +17 -16
- package/dist/sensor/architecture.js.map +1 -1
- package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
- package/dist/sensor/camera-saturation-capacity.js +36 -34
- package/dist/sensor/camera-saturation-capacity.js.map +1 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
- package/dist/sensor/capture-color-sampling-binding.js +39 -41
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
- package/dist/sensor/capture-mode-timing.d.ts +8 -9
- package/dist/sensor/capture-mode-timing.js +24 -21
- package/dist/sensor/capture-mode-timing.js.map +1 -1
- package/dist/sensor/capture-mode.d.ts +28 -30
- package/dist/sensor/capture-mode.js +33 -31
- package/dist/sensor/capture-mode.js.map +1 -1
- package/dist/sensor/color-sampling.d.ts +30 -33
- package/dist/sensor/color-sampling.js +32 -37
- package/dist/sensor/color-sampling.js.map +1 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
- package/dist/sensor/constant-rate-temporal-integration.js +28 -26
- package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
- package/dist/sensor/dark-current.d.ts +53 -49
- package/dist/sensor/dark-current.js +87 -46
- package/dist/sensor/dark-current.js.map +1 -1
- package/dist/sensor/environment-photo-signal.d.ts +71 -30
- package/dist/sensor/environment-photo-signal.js +127 -46
- package/dist/sensor/environment-photo-signal.js.map +1 -1
- package/dist/sensor/eqe-electron-rate.d.ts +14 -13
- package/dist/sensor/eqe-electron-rate.js +34 -14
- package/dist/sensor/eqe-electron-rate.js.map +1 -1
- package/dist/sensor/eqe-local-exposure.d.ts +24 -24
- package/dist/sensor/eqe-local-exposure.js +15 -11
- package/dist/sensor/eqe-local-exposure.js.map +1 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
- package/dist/sensor/eqe-temporal-exposure.js +15 -10
- package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/exposure-window.d.ts +48 -34
- package/dist/sensor/exposure-window.js +77 -36
- package/dist/sensor/exposure-window.js.map +1 -1
- package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
- package/dist/sensor/fixed-pattern-noise.js +166 -0
- package/dist/sensor/fixed-pattern-noise.js.map +1 -0
- package/dist/sensor/iso-gain.d.ts +44 -0
- package/dist/sensor/iso-gain.js +119 -0
- package/dist/sensor/iso-gain.js.map +1 -0
- package/dist/sensor/iso-signal-chain.d.ts +25 -48
- package/dist/sensor/iso-signal-chain.js +52 -66
- package/dist/sensor/iso-signal-chain.js.map +1 -1
- package/dist/sensor/local-exposure-binding.d.ts +21 -21
- package/dist/sensor/local-exposure-binding.js +22 -18
- package/dist/sensor/local-exposure-binding.js.map +1 -1
- package/dist/sensor/optical-stack.d.ts +36 -40
- package/dist/sensor/optical-stack.js +34 -37
- package/dist/sensor/optical-stack.js.map +1 -1
- package/dist/sensor/photon-energy.d.ts +22 -28
- package/dist/sensor/photon-energy.js +42 -34
- package/dist/sensor/photon-energy.js.map +1 -1
- package/dist/sensor/physical-charge-capacity.d.ts +20 -30
- package/dist/sensor/physical-charge-capacity.js +35 -36
- package/dist/sensor/physical-charge-capacity.js.map +1 -1
- package/dist/sensor/pixel-pitch.d.ts +2 -3
- package/dist/sensor/pixel-pitch.js +4 -2
- package/dist/sensor/pixel-pitch.js.map +1 -1
- package/dist/sensor/radiometry-readiness.d.ts +13 -15
- package/dist/sensor/radiometry-readiness.js +20 -17
- package/dist/sensor/radiometry-readiness.js.map +1 -1
- package/dist/sensor/raw-readout.d.ts +173 -83
- package/dist/sensor/raw-readout.js +425 -160
- package/dist/sensor/raw-readout.js.map +1 -1
- package/dist/sensor/raw-reconstruction.d.ts +112 -44
- package/dist/sensor/raw-reconstruction.js +200 -47
- package/dist/sensor/raw-reconstruction.js.map +1 -1
- package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
- package/dist/sensor/readout-exposure-linkage.js +125 -27
- package/dist/sensor/readout-exposure-linkage.js.map +1 -1
- package/dist/sensor/readout-timing.d.ts +43 -44
- package/dist/sensor/readout-timing.js +38 -30
- package/dist/sensor/readout-timing.js.map +1 -1
- package/dist/sensor/response-application-compatibility.d.ts +21 -28
- package/dist/sensor/response-application-compatibility.js +35 -34
- package/dist/sensor/response-application-compatibility.js.map +1 -1
- package/dist/sensor/response-operating-range.d.ts +26 -35
- package/dist/sensor/response-operating-range.js +40 -39
- package/dist/sensor/response-operating-range.js.map +1 -1
- package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
- package/dist/sensor/responsivity-photocurrent.js +57 -40
- package/dist/sensor/responsivity-photocurrent.js.map +1 -1
- package/dist/sensor/sampling-aperture.d.ts +21 -25
- package/dist/sensor/sampling-aperture.js +29 -28
- package/dist/sensor/sampling-aperture.js.map +1 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
- package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
- package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/sensor-geometry.d.ts +28 -32
- package/dist/sensor/sensor-geometry.js +35 -20
- package/dist/sensor/sensor-geometry.js.map +1 -1
- package/dist/sensor/signal-noise.d.ts +14 -16
- package/dist/sensor/signal-noise.js +15 -13
- package/dist/sensor/signal-noise.js.map +1 -1
- package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
- package/dist/sensor/spatial-sample-reduction.js +39 -48
- package/dist/sensor/spatial-sample-reduction.js.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
- package/dist/sensor/spatial-sampling-quadrature.js +31 -36
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
- package/dist/sensor/spatio-spectral-reduction.js +24 -29
- package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
- package/dist/sensor/spectral-coverage.d.ts +6 -9
- package/dist/sensor/spectral-coverage.js +9 -6
- package/dist/sensor/spectral-coverage.js.map +1 -1
- package/dist/sensor/spectral-quadrature.d.ts +46 -60
- package/dist/sensor/spectral-quadrature.js +38 -48
- package/dist/sensor/spectral-quadrature.js.map +1 -1
- package/dist/sensor/spectral-response.d.ts +53 -41
- package/dist/sensor/spectral-response.js +80 -47
- package/dist/sensor/spectral-response.js.map +1 -1
- package/dist/sensor/stochastic-seed.d.ts +50 -0
- package/dist/sensor/stochastic-seed.js +123 -0
- package/dist/sensor/stochastic-seed.js.map +1 -0
- package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
- package/dist/sensor/temporal-eqe-sum.js +5 -6
- package/dist/sensor/temporal-eqe-sum.js.map +1 -1
- package/dist/sensor/temporal-photo-signal.d.ts +5 -6
- package/dist/sensor/temporal-photo-signal.js +11 -10
- package/dist/sensor/temporal-photo-signal.js.map +1 -1
- package/dist/sensor/temporal-sample-binding.d.ts +1 -2
- package/dist/sensor/temporal-sample-binding.js +3 -3
- package/dist/sensor/temporal-sample-binding.js.map +1 -1
- package/dist/simulation/poc-simulation.d.ts +16 -16
- package/dist/simulation/poc-simulation.js +20 -15
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/dist/stabilization/camera-shake.d.ts +42 -18
- package/dist/stabilization/camera-shake.js +43 -20
- package/dist/stabilization/camera-shake.js.map +1 -1
- package/dist/stabilization/system.d.ts +44 -41
- package/dist/stabilization/system.js +196 -108
- package/dist/stabilization/system.js.map +1 -1
- package/docs/AGENT_GUIDE.md +183 -0
- package/docs/API_REFERENCE.md +761 -2
- package/docs/QUICK_START.md +495 -0
- package/docs/USAGE.md +1719 -714
- package/docs/api/camera-equivalent-focal-length.md +6 -7
- package/docs/api/camera-field-of-view.md +16 -8
- package/docs/api/camera-lens-projection.md +246 -0
- package/docs/api/camera-projected-object-size.md +6 -5
- package/docs/api/capture-capture-export-metadata.md +10 -10
- package/docs/api/capture-dng-import.md +134 -0
- package/docs/api/capture-environment-raw-producer.md +17 -11
- package/docs/api/capture-export-jpeg.md +16 -0
- package/docs/api/capture-focus-control.md +25 -47
- package/docs/api/capture-linear-encoding.md +21 -12
- package/docs/api/capture-lossless-jpeg.md +49 -0
- package/docs/api/capture-native-environment-optical-stage.md +75 -0
- package/docs/api/capture-native-environment-raw.md +161 -4
- package/docs/api/capture-native-raw-development.md +69 -8
- package/docs/api/capture-native-raw-dng.md +84 -0
- package/docs/api/capture-native-raw.md +21 -10
- package/docs/api/capture-packed-sensor-raw.md +156 -0
- package/docs/api/capture-photographic-export.md +69 -31
- package/docs/api/capture-raw-frame-reconstruction.md +8 -8
- package/docs/api/capture-raw-white-level.md +37 -0
- package/docs/api/capture-release-sequence.md +6 -7
- package/docs/api/capture-sensor-raw-frame.md +6 -6
- package/docs/api/capture-sensor-raw-producer.md +17 -11
- package/docs/api/capture-simulated-capture.md +15 -15
- package/docs/api/color-camera-color-matrix.md +103 -0
- package/docs/api/color-capture-color.md +22 -11
- package/docs/api/color-chromatic-adaptation.md +82 -0
- package/docs/api/color-color-difference.md +134 -0
- package/docs/api/color-color-matching-functions.md +259 -0
- package/docs/api/color-colorimetry-math.md +54 -0
- package/docs/api/color-gamut-mapping.md +72 -0
- package/docs/api/color-illuminants.md +280 -0
- package/docs/api/color-rgb-color-spaces.md +151 -0
- package/docs/api/color-sensor-color-development.md +27 -0
- package/docs/api/color-srgb-icc.md +2 -4
- package/docs/api/color-white-balance.md +95 -19
- package/docs/api/composition-image-formation-plan.md +124 -95
- package/docs/api/composition-plan-consumer.md +7 -7
- package/docs/api/core-calculation-result.md +18 -14
- package/docs/api/core-configuration-error.md +1 -1
- package/docs/api/core-image-formation.md +7 -7
- package/docs/api/core-scientific-assurance.md +12 -10
- package/docs/api/core-spectral-composition.md +14 -14
- package/docs/api/core-spectral.md +6 -6
- package/docs/api/core-validation.md +3 -3
- package/docs/api/core-version.md +7 -6
- package/docs/api/equipment-exposure-capabilities.md +11 -10
- package/docs/api/equipment-generic-tier-assets.md +7 -2
- package/docs/api/equipment-generic-tier-presets.md +6 -6
- package/docs/api/equipment-iso-capabilities.md +18 -18
- package/docs/api/equipment-metering-capabilities.md +6 -6
- package/docs/api/equipment-release-capabilities.md +4 -4
- package/docs/api/exports.json +2213 -8
- package/docs/api/exposure-exposure-duration-control.md +9 -9
- package/docs/api/exposure-exposure-mode-resolver.md +35 -31
- package/docs/api/exposure-exposure.md +10 -10
- package/docs/api/exposure-flash-ttl.md +182 -0
- package/docs/api/exposure-flash.md +183 -28
- package/docs/api/exposure-metering-scene-radiance.md +11 -10
- package/docs/api/exposure-metering-target.md +9 -8
- package/docs/api/exposure-metering-temporal.md +8 -8
- package/docs/api/exposure-metering.md +69 -9
- package/docs/api/exposure-program-line.md +6 -5
- package/docs/api/facade-chart-radiance-batch.md +96 -0
- package/docs/api/facade-chart-scenes.md +240 -0
- package/docs/api/facade-scene-radiance.md +122 -0
- package/docs/api/facade-simulate-capture.md +324 -0
- package/docs/api/gpu-image-kernel-accelerator.md +157 -0
- package/docs/api/gpu-image-kernel-execution.md +152 -0
- package/docs/api/motion-camera-rotation.md +43 -26
- package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
- package/docs/api/motion-capture-rotation-trajectory.md +15 -15
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
- package/docs/api/motion-extended-object-projection.md +10 -8
- package/docs/api/motion-projected-motion.md +8 -8
- package/docs/api/motion-temporal-exposure-sum.md +98 -0
- package/docs/api/motion-video-sequence.md +159 -0
- package/docs/api/optics-aperture.md +8 -8
- package/docs/api/optics-atmospheric-haze.md +104 -0
- package/docs/api/optics-brown-conrady-distortion.md +123 -0
- package/docs/api/optics-circle-of-confusion.md +5 -4
- package/docs/api/optics-complex-pupil-psf.md +57 -16
- package/docs/api/optics-depth-of-field.md +12 -6
- package/docs/api/optics-diffraction.md +8 -7
- package/docs/api/optics-focus-breathing.md +104 -16
- package/docs/api/optics-focus-state.md +9 -10
- package/docs/api/optics-front-of-lens-filter.md +72 -14
- package/docs/api/optics-illumination-vignetting.md +10 -10
- package/docs/api/optics-irradiance-convolution.md +95 -0
- package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
- package/docs/api/optics-lens-psf-kernels.md +72 -0
- package/docs/api/optics-lens-psf-profile.md +48 -26
- package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
- package/docs/api/optics-polygon-diffraction.md +78 -13
- package/docs/api/optics-profile-contract.md +4 -4
- package/docs/api/optics-psf-foundation.md +12 -12
- package/docs/api/optics-pupil-vignetting.md +132 -0
- package/docs/api/optics-radial-distortion.md +12 -12
- package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
- package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
- package/docs/api/optics-sensor-aperture-rays.md +3 -2
- package/docs/api/optics-sensor-environment-query.md +52 -9
- package/docs/api/optics-sensor-psf-quadrature.md +13 -10
- package/docs/api/optics-stray-light.md +12 -11
- package/docs/api/optics-thin-lens.md +4 -3
- package/docs/api/optics-zernike-wavefront.md +229 -0
- package/docs/api/output-capture-corrected-sdr.md +10 -7
- package/docs/api/output-capture-geometry.md +35 -36
- package/docs/api/output-capture-sdr.md +4 -4
- package/docs/api/output-crop.md +7 -4
- package/docs/api/output-geometric-transforms.md +65 -19
- package/docs/api/output-lens-corrections.md +17 -15
- package/docs/api/output-native-capture-sdr.md +26 -13
- package/docs/api/output-png-encoder.md +105 -0
- package/docs/api/output-print-contrast-reference.md +8 -8
- package/docs/api/output-print-detail.md +14 -14
- package/docs/api/output-print-jpeg.md +22 -5
- package/docs/api/output-print-plan.md +18 -18
- package/docs/api/output-print-region-statistics.md +14 -14
- package/docs/api/output-sdr-rendering.md +52 -10
- package/docs/api/output-subject-framing-crop.md +5 -6
- package/docs/api/processing-demosaic.md +120 -0
- package/docs/api/processing-denoise.md +148 -0
- package/docs/api/processing-focus-stacking.md +41 -0
- package/docs/api/processing-hdr.md +113 -0
- package/docs/api/processing-panorama.md +82 -0
- package/docs/api/processing-processing-task.md +107 -0
- package/docs/api/processing-tone-mapping.md +142 -0
- package/docs/api/schema-camera.md +6 -4
- package/docs/api/schema-illumination-spectral.md +10 -11
- package/docs/api/schema-illumination-temporal.md +13 -15
- package/docs/api/schema-illumination.md +4 -4
- package/docs/api/schema-scene-radiance-temporal.md +10 -11
- package/docs/api/schema-scene-radiance.md +18 -17
- package/docs/api/schema-scene.md +9 -9
- package/docs/api/schema-validation.md +1 -1
- package/docs/api/sensor-accumulated-charge.md +12 -20
- package/docs/api/sensor-architecture.md +15 -16
- package/docs/api/sensor-camera-saturation-capacity.md +9 -11
- package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
- package/docs/api/sensor-capture-mode-timing.md +9 -9
- package/docs/api/sensor-capture-mode.md +29 -30
- package/docs/api/sensor-color-sampling.md +31 -33
- package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
- package/docs/api/sensor-dark-current.md +30 -14
- package/docs/api/sensor-environment-photo-signal.md +13 -6
- package/docs/api/sensor-eqe-electron-rate.md +9 -8
- package/docs/api/sensor-eqe-local-exposure.md +18 -17
- package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
- package/docs/api/sensor-exposure-window.md +24 -24
- package/docs/api/sensor-fixed-pattern-noise.md +104 -0
- package/docs/api/sensor-iso-gain.md +63 -0
- package/docs/api/sensor-iso-signal-chain.md +13 -22
- package/docs/api/sensor-local-exposure-binding.md +12 -13
- package/docs/api/sensor-optical-stack.md +37 -40
- package/docs/api/sensor-photon-energy.md +10 -11
- package/docs/api/sensor-physical-charge-capacity.md +8 -13
- package/docs/api/sensor-pixel-pitch.md +1 -1
- package/docs/api/sensor-radiometry-readiness.md +9 -9
- package/docs/api/sensor-raw-readout.md +118 -52
- package/docs/api/sensor-raw-reconstruction.md +97 -20
- package/docs/api/sensor-readout-exposure-linkage.md +120 -24
- package/docs/api/sensor-readout-timing.md +33 -35
- package/docs/api/sensor-response-application-compatibility.md +9 -11
- package/docs/api/sensor-response-operating-range.md +14 -18
- package/docs/api/sensor-responsivity-photocurrent.md +9 -12
- package/docs/api/sensor-sampling-aperture.md +22 -25
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
- package/docs/api/sensor-sensor-geometry.md +23 -24
- package/docs/api/sensor-signal-noise.md +10 -10
- package/docs/api/sensor-spatial-sample-reduction.md +27 -30
- package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
- package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
- package/docs/api/sensor-spectral-coverage.md +5 -5
- package/docs/api/sensor-spectral-quadrature.md +33 -35
- package/docs/api/sensor-spectral-response.md +28 -16
- package/docs/api/sensor-temporal-photo-signal.md +6 -6
- package/docs/api/simulation-poc-simulation.md +17 -16
- package/docs/api/stabilization-camera-shake.md +29 -10
- package/docs/api/stabilization-system.md +25 -21
- package/docs/examples/production-request.json +3821 -2157
- package/docs/examples/simulate-capture.mjs +14 -0
- package/llms.txt +35 -0
- package/package.json +32 -12
- package/AGENTS.md +0 -674
- package/CONTRIBUTING.md +0 -76
- package/DCO +0 -33
- package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
- package/dist/camera/field-of-view.d.ts.map +0 -1
- package/dist/camera/projected-object-size.d.ts.map +0 -1
- package/dist/capture/capture-export-metadata.d.ts.map +0 -1
- package/dist/capture/environment-raw-producer.d.ts.map +0 -1
- package/dist/capture/export-jpeg.d.ts.map +0 -1
- package/dist/capture/export-tiff.d.ts.map +0 -1
- package/dist/capture/focus-control.d.ts.map +0 -1
- package/dist/capture/linear-encoding.d.ts.map +0 -1
- package/dist/capture/native-environment-raw.d.ts.map +0 -1
- package/dist/capture/native-raw-development.d.ts.map +0 -1
- package/dist/capture/native-raw.d.ts.map +0 -1
- package/dist/capture/photographic-export.d.ts.map +0 -1
- package/dist/capture/raw-frame-limits.d.ts.map +0 -1
- package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
- package/dist/capture/release-sequence.d.ts.map +0 -1
- package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
- package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
- package/dist/capture/simulated-capture.d.ts.map +0 -1
- package/dist/color/capture-color.d.ts.map +0 -1
- package/dist/color/sensor-color-development.d.ts.map +0 -1
- package/dist/color/srgb-icc.d.ts.map +0 -1
- package/dist/color/srgb-transfer.d.ts.map +0 -1
- package/dist/color/white-balance.d.ts.map +0 -1
- package/dist/composition/image-formation-plan.d.ts.map +0 -1
- package/dist/composition/plan-consumer.d.ts.map +0 -1
- package/dist/core/calculation-result.d.ts.map +0 -1
- package/dist/core/canonical-json.d.ts.map +0 -1
- package/dist/core/configuration-error.d.ts.map +0 -1
- package/dist/core/evidence-provenance.d.ts.map +0 -1
- package/dist/core/image-formation.d.ts.map +0 -1
- package/dist/core/owned-data.d.ts.map +0 -1
- package/dist/core/record-validation.d.ts.map +0 -1
- package/dist/core/scientific-assurance.d.ts.map +0 -1
- package/dist/core/spectral-composition.d.ts.map +0 -1
- package/dist/core/spectral.d.ts.map +0 -1
- package/dist/core/validation.d.ts.map +0 -1
- package/dist/core/version.d.ts.map +0 -1
- package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
- package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
- package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
- package/dist/equipment/iso-capabilities.d.ts.map +0 -1
- package/dist/equipment/metering-capabilities.d.ts.map +0 -1
- package/dist/equipment/release-capabilities.d.ts.map +0 -1
- package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
- package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
- package/dist/exposure/exposure.d.ts.map +0 -1
- package/dist/exposure/flash.d.ts.map +0 -1
- package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
- package/dist/exposure/metering-target.d.ts.map +0 -1
- package/dist/exposure/metering-temporal.d.ts.map +0 -1
- package/dist/exposure/metering.d.ts.map +0 -1
- package/dist/exposure/program-line.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/motion/camera-rotation.d.ts.map +0 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/extended-object-projection.d.ts.map +0 -1
- package/dist/motion/projected-motion.d.ts.map +0 -1
- package/dist/optics/aperture.d.ts.map +0 -1
- package/dist/optics/circle-of-confusion.d.ts.map +0 -1
- package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
- package/dist/optics/depth-of-field.d.ts.map +0 -1
- package/dist/optics/diffraction.d.ts.map +0 -1
- package/dist/optics/focus-breathing.d.ts.map +0 -1
- package/dist/optics/focus-state.d.ts.map +0 -1
- package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
- package/dist/optics/illumination-vignetting.d.ts.map +0 -1
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
- package/dist/optics/lens-psf-profile.d.ts.map +0 -1
- package/dist/optics/polygon-diffraction.d.ts.map +0 -1
- package/dist/optics/profile-contract.d.ts.map +0 -1
- package/dist/optics/psf-foundation.d.ts.map +0 -1
- package/dist/optics/radial-distortion.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
- package/dist/optics/sensor-environment-query.d.ts.map +0 -1
- package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-psf-support.d.ts.map +0 -1
- package/dist/optics/stray-light.d.ts.map +0 -1
- package/dist/optics/thin-lens.d.ts.map +0 -1
- package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
- package/dist/output/capture-geometry.d.ts.map +0 -1
- package/dist/output/capture-sdr.d.ts.map +0 -1
- package/dist/output/crop.d.ts.map +0 -1
- package/dist/output/geometric-transforms.d.ts.map +0 -1
- package/dist/output/lens-corrections.d.ts.map +0 -1
- package/dist/output/native-capture-sdr.d.ts.map +0 -1
- package/dist/output/print-contrast-reference.d.ts.map +0 -1
- package/dist/output/print-detail.d.ts.map +0 -1
- package/dist/output/print-jpeg.d.ts.map +0 -1
- package/dist/output/print-plan.d.ts.map +0 -1
- package/dist/output/print-region-statistics.d.ts.map +0 -1
- package/dist/output/sdr-rendering.d.ts.map +0 -1
- package/dist/output/subject-framing-crop.d.ts.map +0 -1
- package/dist/schema/camera.d.ts.map +0 -1
- package/dist/schema/camera.js +0 -3
- package/dist/schema/camera.js.map +0 -1
- package/dist/schema/illumination-spectral.d.ts.map +0 -1
- package/dist/schema/illumination-temporal.d.ts.map +0 -1
- package/dist/schema/illumination.d.ts.map +0 -1
- package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
- package/dist/schema/scene-radiance.d.ts.map +0 -1
- package/dist/schema/scene.d.ts.map +0 -1
- package/dist/schema/scene.js +0 -3
- package/dist/schema/scene.js.map +0 -1
- package/dist/schema/validation.d.ts.map +0 -1
- package/dist/sensor/accumulated-charge.d.ts.map +0 -1
- package/dist/sensor/architecture.d.ts.map +0 -1
- package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
- package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
- package/dist/sensor/capture-mode.d.ts.map +0 -1
- package/dist/sensor/color-sampling.d.ts.map +0 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
- package/dist/sensor/dark-current.d.ts.map +0 -1
- package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
- package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
- package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/exposure-window.d.ts.map +0 -1
- package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
- package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
- package/dist/sensor/optical-stack.d.ts.map +0 -1
- package/dist/sensor/photon-energy.d.ts.map +0 -1
- package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
- package/dist/sensor/pixel-pitch.d.ts.map +0 -1
- package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
- package/dist/sensor/raw-readout.d.ts.map +0 -1
- package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
- package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
- package/dist/sensor/readout-timing.d.ts.map +0 -1
- package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
- package/dist/sensor/response-operating-range.d.ts.map +0 -1
- package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
- package/dist/sensor/sampling-aperture.d.ts.map +0 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/sensor-geometry.d.ts.map +0 -1
- package/dist/sensor/signal-noise.d.ts.map +0 -1
- package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
- package/dist/sensor/spectral-coverage.d.ts.map +0 -1
- package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
- package/dist/sensor/spectral-response.d.ts.map +0 -1
- package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
- package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
- package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
- package/dist/simulation/poc-simulation.d.ts.map +0 -1
- package/dist/stabilization/camera-shake.d.ts.map +0 -1
- package/dist/stabilization/system.d.ts.map +0 -1
- package/docs/API_STYLE.md +0 -235
- package/docs/ARCHITECTURE.md +0 -356
- package/docs/AUTOMATION_COORDINATION.md +0 -190
- package/docs/CAPTURE_COLOR.md +0 -25
- package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
- package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
- package/docs/CAPTURE_SDR.md +0 -22
- package/docs/DENSE_PUPIL_QUALIFICATION.md +0 -121
- package/docs/DEVELOPERS.md +0 -68
- package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
- package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
- package/docs/EXPORT_ACCEPTANCE.md +0 -133
- package/docs/GENERIC_TIER_PRESETS.md +0 -269
- package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
- package/docs/IMAGE_FORMATION.md +0 -247
- package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
- package/docs/MOTION_AND_SIGNAL.md +0 -250
- package/docs/NATIVE_CAPTURE_SDR.md +0 -70
- package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
- package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
- package/docs/NATIVE_RAW_AND_PRINT.md +0 -54
- package/docs/NUMERICAL_CORRECTNESS.md +0 -191
- package/docs/PERFORMANCE_BASELINE.md +0 -56
- package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
- package/docs/PHYSICS_FOUNDATION.md +0 -426
- package/docs/POC_API.md +0 -278
- package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
- package/docs/POC_PROJECTION_REUSE.md +0 -124
- package/docs/PRINT_195_196_REVIEW.md +0 -93
- package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
- package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
- package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
- package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
- package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
- package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
- package/docs/PRINT_PLANNING.md +0 -75
- package/docs/PRINT_REGION_STATISTICS.md +0 -38
- package/docs/PROCESSED_OUTPUT.md +0 -157
- package/docs/PRODUCTION_COMPOSITION.md +0 -373
- package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
- package/docs/PROVENANCE.md +0 -115
- package/docs/PSF_FOUNDATION.md +0 -165
- package/docs/RAW_FRAME_ENVELOPE.md +0 -56
- package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
- package/docs/RELEASE_1_0.md +0 -66
- package/docs/RELEASE_1_0_1.md +0 -61
- package/docs/RELEASE_1_1_0.md +0 -25
- package/docs/RELEASE_1_2_0.md +0 -51
- package/docs/RELEASE_1_3_0.md +0 -15
- package/docs/RELEASE_1_4_0.md +0 -23
- package/docs/RELEASE_1_5_0.md +0 -105
- package/docs/RELEASE_AUDIT.md +0 -39
- package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
- package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
- package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
- package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
- package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
- package/docs/SDR_RENDERING.md +0 -33
- package/docs/SENSOR_APERTURE_RAYS.md +0 -23
- package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
- package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
- package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
- package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
- package/docs/SENSOR_RAW_FRAME.md +0 -20
- package/docs/SENSOR_RAW_PRODUCER.md +0 -77
- package/docs/SEPARABLE_EMISSION_DRAFT.md +0 -103
- package/docs/SIGNAL_CONFORMANCE.md +0 -23
- package/docs/SIMULATED_CAPTURE.md +0 -65
- package/docs/STABILIZATION.md +0 -234
- package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
- package/docs/TIER_ACCEPTANCE.md +0 -129
- package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
- package/docs/V1_COMPOSITION_MAP.md +0 -123
- package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
- package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
- package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
- package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
- package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
- package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
- package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
- package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
- package/docs/licenses/castleCSF-MIT.txt +0 -21
- package/docs/validation/dense-pupil-2026-10-06/pilot.jsonl +0 -6
- package/docs/validation/documentation-fragments.json +0 -212
- package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
- package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
- package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
- package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
- package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
- package/docs/validation/print-196-candidate-capabilities.json +0 -28
- package/docs/validation/print-196-candidate-evidence.json +0 -356
- package/docs/validation/print-196-engine-acceptance.json +0 -81
- package/docs/validation/print-detail-capabilities.json +0 -103
- package/docs/validation/print-detail-jpeg-evidence.json +0 -116
- package/docs/validation/print-detail-sdr-evidence.json +0 -81
- package/docs/validation/release-audit-inventory.json +0 -1306
- package/docs/validation/tier-acceptance-report-v1.json +0 -2538
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optical-stack.js","sourceRoot":"","sources":["../../src/sensor/optical-stack.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"optical-stack.js","sourceRoot":"","sources":["../../src/sensor/optical-stack.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Sensor optical stack: the layers in front of the photodiodes (such as cover glass, infrared- and\n * ultraviolet-cut filters, a birefringent low-pass filter and microlenses), described as metadata,\n * plus an optional declared anti-aliasing (AA) blur kernel.\n *\n * Whether a component is physically present is recorded separately from its net AA effect. That lets\n * the schema describe designs that cancel the AA effect without claiming the hardware is missing.\n * Component presence alone creates no optical effect. Thickness, refractive index, spectral\n * transmission, angle of acceptance, focus shift and microlens collection need separate models.\n * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support\n * limits.\n */\n\nimport { rejectUnknownFields } from \"../core/record-validation.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport { InvalidScientificInputError } from \"../core/validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport type SensorOpticalStackComponentRole =\n | \"cover-glass\"\n | \"infrared-cut\"\n | \"ultraviolet-cut\"\n | \"anti-reflection\"\n | \"birefringent-low-pass\"\n | \"wave-plate\"\n | \"other-optical-filter\";\n\nexport interface SensorOpticalStackComponent {\n componentId: string;\n /**\n * A component can have several roles, because one physical element can do\n * more than one optical or filtering job.\n */\n roles: readonly SensorOpticalStackComponentRole[];\n evidence: readonly EvidenceProvenance[];\n}\n\nexport interface SensorMicrolensDeclaration {\n presence: \"present\" | \"absent\";\n evidence: readonly EvidenceProvenance[];\n /**\n * Being present does not establish any model of angle, spectrum, fill factor\n * or collection efficiency.\n */\n opticalEffectModel: \"unresolved\";\n}\n\nexport interface AntiAliasingPointSplitComponent {\n /**\n * Physical offset on the native sensor from where the light would otherwise\n * land. +X right, +Y down. Units: micrometres.\n */\n offsetMicrometers: {\n x: number;\n y: number;\n };\n /**\n * Normalized weight (dimensionless). A point-splitting kernel only describes\n * where the light goes; the stack's total throughput is not part of it.\n */\n normalizedWeight: number;\n}\n\nexport type SensorEffectiveAntiAliasingSpatialResponse =\n | {\n /**\n * Documented absence (or cancellation) of deliberate AA splitting. It does\n * not mean the rest of the sensor stack has no optical effect.\n */\n kind: \"absent\";\n evidence: readonly EvidenceProvenance[];\n }\n | {\n /**\n * An AA effect is known to exist, but its spatial response is not\n * specified well enough to use.\n */\n kind: \"present-unresolved\";\n evidence: readonly EvidenceProvenance[];\n }\n | {\n /**\n * Generic approximation: each point is split into weighted copies at\n * offsets in native sensor physical coordinates.\n */\n kind: \"normalized-point-splitting-kernel\";\n evidence: readonly EvidenceProvenance[];\n coordinateSystem: \"native-sensor-physical\";\n scope:\n \"field-wavelength-polarization-invariant-approximation\";\n components: readonly AntiAliasingPointSplitComponent[];\n };\n\nexport interface SensorOpticalStackProfile {\n schemaVersion: \"0.1.0\";\n profileId: string;\n evidence: readonly EvidenceProvenance[];\n /**\n * In order from the side light enters towards the sensor.\n *\n * These components are descriptive metadata only. Their presence does not\n * create transmission, focus-shift, aberration or spectral effects.\n */\n orderedComponents?: readonly SensorOpticalStackComponent[];\n /**\n * Omitted means \"unknown, not stated\".\n *\n * This is separate from which components are present, so a stack can\n * contain low-pass hardware while its net AA effect is absent or cancelled.\n */\n effectiveAntiAliasingSpatialResponse?: SensorEffectiveAntiAliasingSpatialResponse;\n /**\n * Omitted means \"unknown, not stated\".\n */\n microlens?: SensorMicrolensDeclaration;\n}\n\nexport interface ResolvedAntiAliasingSpatialKernel {\n profileId: string;\n effectiveResponse:\n | \"absent\"\n | \"normalized-point-splitting-kernel\";\n coordinateSystem: \"native-sensor-physical\";\n components: readonly AntiAliasingPointSplitComponent[];\n normalizedWeightSum: number;\n throughputIncluded: false;\n spectralTransmissionIncluded: false;\n fieldDependenceIncluded: false;\n wavelengthDependenceIncluded: false;\n polarizationDependenceIncluded: false;\n microlensResponseIncluded: false;\n coverFilterStackEffectsIncluded: false;\n wholeSensorOpticalStackResponse: false;\n provenance: {\n profile: readonly EvidenceProvenance[];\n antiAliasingResponse: readonly EvidenceProvenance[];\n };\n}\n\nconst COMPONENT_ROLES = new Set<SensorOpticalStackComponentRole>([\n \"cover-glass\",\n \"infrared-cut\",\n \"ultraviolet-cut\",\n \"anti-reflection\",\n \"birefringent-low-pass\",\n \"wave-plate\",\n \"other-optical-filter\"\n]);\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty string.\"\n );\n }\n return value;\n}\n\nfunction parseComponentRoles(\n value: unknown,\n path: string\n): readonly SensorOpticalStackComponentRole[] {\n if (!Array.isArray(value) || value.length === 0) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty array.\"\n );\n }\n\n const roles = value.map((entry, index) => {\n if (\n typeof entry !== \"string\" ||\n !COMPONENT_ROLES.has(\n entry as SensorOpticalStackComponentRole\n )\n ) {\n throw new InvalidConfigurationError(\n path + \"[\" + index + \"] is invalid.\"\n );\n }\n return entry as SensorOpticalStackComponentRole;\n });\n\n if (new Set(roles).size !== roles.length) {\n throw new InvalidConfigurationError(\n path + \" must not contain duplicate roles.\"\n );\n }\n\n return roles;\n}\n\nfunction parseOrderedComponents(\n value: unknown,\n path: string\n): readonly SensorOpticalStackComponent[] {\n if (!Array.isArray(value) || value.length === 0) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty array.\"\n );\n }\n\n const components = value.map((entry, index) => {\n const record = requireRecord(\n entry,\n path + \"[\" + index + \"]\", [\"componentId\", \"roles\", \"evidence\"]\n );\n\n return {\n componentId: requireNonEmptyString(\n record.componentId,\n path + \"[\" + index + \"].componentId\"\n ),\n roles: parseComponentRoles(\n record.roles,\n path + \"[\" + index + \"].roles\"\n ),\n evidence: parseEvidenceList(\n record.evidence,\n path + \"[\" + index + \"].evidence\"\n )\n };\n });\n\n const ids = components.map(\n (component) => component.componentId\n );\n if (new Set(ids).size !== ids.length) {\n throw new InvalidConfigurationError(\n path + \" must not contain duplicate componentId values.\"\n );\n }\n\n return components;\n}\n\nfunction requireFiniteNumber(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a finite number.\"\n );\n }\n return value;\n}\n\nfunction parsePointSplitComponents(\n value: unknown,\n path: string\n): readonly AntiAliasingPointSplitComponent[] {\n if (!Array.isArray(value) || value.length === 0) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty array.\"\n );\n }\n\n const components = value.map((entry, index) => {\n const record = requireRecord(\n entry,\n path + \"[\" + index + \"]\", [\"offsetMicrometers\", \"normalizedWeight\"]\n );\n const offset = requireRecord(\n record.offsetMicrometers,\n path + \"[\" + index + \"].offsetMicrometers\", [\"x\", \"y\"]\n );\n const normalizedWeight = requireFiniteNumber(\n record.normalizedWeight,\n path + \"[\" + index + \"].normalizedWeight\"\n );\n\n if (normalizedWeight <= 0) {\n throw new InvalidConfigurationError(\n path +\n \"[\" +\n index +\n \"].normalizedWeight must be greater than zero.\"\n );\n }\n\n return {\n offsetMicrometers: {\n x: requireFiniteNumber(\n offset.x,\n path +\n \"[\" +\n index +\n \"].offsetMicrometers.x\"\n ),\n y: requireFiniteNumber(\n offset.y,\n path +\n \"[\" +\n index +\n \"].offsetMicrometers.y\"\n )\n },\n normalizedWeight\n };\n });\n\n const weightSum = components.reduce(\n (sum, component) =>\n sum + component.normalizedWeight,\n 0\n );\n\n if (\n !Number.isFinite(weightSum) ||\n Math.abs(weightSum - 1) > 1e-12\n ) {\n throw new InvalidConfigurationError(\n path +\n \" normalizedWeight values must sum to 1 within 1e-12.\"\n );\n }\n\n return components;\n}\n\nfunction parseAntiAliasingResponse(\n value: unknown,\n path: string\n): SensorEffectiveAntiAliasingSpatialResponse {\n const record = requireRecord(value, path, [\"kind\", \"coordinateSystem\", \"scope\", \"components\", \"evidence\"]);\n\n if (\n record.kind === \"absent\" ||\n record.kind === \"present-unresolved\"\n ) {\n if (\n record.coordinateSystem !== undefined ||\n record.scope !== undefined ||\n record.components !== undefined\n ) {\n throw new InvalidConfigurationError(\n path +\n \" absent/present-unresolved responses must omit kernel fields.\"\n );\n }\n return {\n kind: record.kind,\n evidence: parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n )\n };\n }\n\n if (\n record.kind ===\n \"normalized-point-splitting-kernel\"\n ) {\n if (\n record.coordinateSystem !==\n \"native-sensor-physical\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.coordinateSystem must be \"native-sensor-physical\".'\n );\n }\n if (\n record.scope !==\n \"field-wavelength-polarization-invariant-approximation\"\n ) {\n throw new InvalidConfigurationError(\n path + \".scope is invalid.\"\n );\n }\n\n return {\n kind:\n \"normalized-point-splitting-kernel\",\n evidence: parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n ),\n coordinateSystem:\n \"native-sensor-physical\",\n scope:\n \"field-wavelength-polarization-invariant-approximation\",\n components: parsePointSplitComponents(\n record.components,\n path + \".components\"\n )\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseMicrolens(\n value: unknown,\n path: string\n): SensorMicrolensDeclaration {\n const record = requireRecord(value, path, [\"presence\", \"opticalEffectModel\", \"evidence\"]);\n\n if (\n record.presence !== \"present\" &&\n record.presence !== \"absent\"\n ) {\n throw new InvalidConfigurationError(\n path + \".presence is invalid.\"\n );\n }\n\n if (record.opticalEffectModel !== \"unresolved\") {\n throw new InvalidConfigurationError(\n path +\n '.opticalEffectModel must be \"unresolved\" in schema 0.1.0.'\n );\n }\n\n return {\n presence: record.presence,\n evidence: parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n ),\n opticalEffectModel: \"unresolved\"\n };\n}\n\n/**\n * Parses descriptive sensor optical-stack metadata, plus an optional explicitly\n * declared anti-aliasing (AA) spatial response.\n *\n * Leave out unknown facts rather than guessing them. Physical presence of a\n * component is separate from the net AA response, so the schema can describe\n * designs that cancel the AA effect without claiming the hardware is missing.\n *\n * In schema 0.1.0, cover glass, filters and microlenses create no optical\n * effect. Thickness, refractive index, spectral transmission, angle of\n * acceptance, focus shift and microlens collection need later explicit models\n * or calibration.\n */\nexport function parseSensorOpticalStackProfile(\n value: unknown\n): SensorOpticalStackProfile {\n const profile = requireRecord(\n value,\n \"sensorOpticalStack\", [\"schemaVersion\", \"orderedComponents\", \"effectiveAntiAliasingSpatialResponse\", \"microlens\", \"profileId\", \"evidence\"]\n );\n\n if (profile.schemaVersion !== \"0.1.0\") {\n throw new InvalidConfigurationError(\n 'sensorOpticalStack.schemaVersion must be \"0.1.0\".'\n );\n }\n\n const orderedComponents =\n profile.orderedComponents === undefined\n ? undefined\n : parseOrderedComponents(\n profile.orderedComponents,\n \"sensorOpticalStack.orderedComponents\"\n );\n\n const effectiveAntiAliasingSpatialResponse =\n profile.effectiveAntiAliasingSpatialResponse ===\n undefined\n ? undefined\n : parseAntiAliasingResponse(\n profile.effectiveAntiAliasingSpatialResponse,\n \"sensorOpticalStack.effectiveAntiAliasingSpatialResponse\"\n );\n\n const microlens =\n profile.microlens === undefined\n ? undefined\n : parseMicrolens(\n profile.microlens,\n \"sensorOpticalStack.microlens\"\n );\n\n if (\n orderedComponents === undefined &&\n effectiveAntiAliasingSpatialResponse ===\n undefined &&\n microlens === undefined\n ) {\n throw new InvalidConfigurationError(\n \"sensorOpticalStack must assert at least one optical-stack fact.\"\n );\n }\n\n return {\n schemaVersion: \"0.1.0\",\n profileId: requireNonEmptyString(\n profile.profileId,\n \"sensorOpticalStack.profileId\"\n ),\n evidence: parseEvidenceList(\n profile.evidence,\n \"sensorOpticalStack.evidence\"\n ),\n ...(orderedComponents === undefined\n ? {}\n : { orderedComponents }),\n ...(effectiveAntiAliasingSpatialResponse ===\n undefined\n ? {}\n : {\n effectiveAntiAliasingSpatialResponse\n }),\n ...(microlens === undefined\n ? {}\n : { microlens })\n };\n}\n\n/**\n * Resolves only the anti-aliasing (AA) spatial kernel.\n *\n * This is not the PSF (point-spread function) of the whole optical stack. Cover\n * glass and filter transmission, refraction, microlens behaviour, dependence on\n * field position, wavelength or polarization, and total throughput are excluded.\n *\n * A documented absent AA response gives a single component with weight 1 at zero\n * offset (no blur). An unknown response (field omitted) or one that is present\n * but unspecified is rejected.\n */\nexport function resolveAntiAliasingSpatialKernel(\n profileInput: SensorOpticalStackProfile\n): ResolvedAntiAliasingSpatialKernel {\n const profile =\n parseSensorOpticalStackProfile(\n profileInput\n );\n const response =\n profile.effectiveAntiAliasingSpatialResponse;\n\n if (response === undefined) {\n throw new InvalidScientificInputError(\n \"Effective anti-aliasing spatial response is unknown/unasserted for this optical-stack profile.\"\n );\n }\n\n if (response.kind === \"present-unresolved\") {\n throw new InvalidScientificInputError(\n \"Effective anti-aliasing spatial response is present but unresolved; a spatial kernel cannot be produced.\"\n );\n }\n\n if (response.kind === \"absent\") {\n return {\n profileId: profile.profileId,\n effectiveResponse: \"absent\",\n coordinateSystem:\n \"native-sensor-physical\",\n components: [\n {\n offsetMicrometers: {\n x: 0,\n y: 0\n },\n normalizedWeight: 1\n }\n ],\n normalizedWeightSum: 1,\n throughputIncluded: false,\n spectralTransmissionIncluded: false,\n fieldDependenceIncluded: false,\n wavelengthDependenceIncluded: false,\n polarizationDependenceIncluded: false,\n microlensResponseIncluded: false,\n coverFilterStackEffectsIncluded: false,\n wholeSensorOpticalStackResponse: false,\n provenance: {\n profile: profile.evidence,\n antiAliasingResponse:\n response.evidence\n }\n };\n }\n\n const normalizedWeightSum =\n response.components.reduce(\n (sum, component) =>\n sum + component.normalizedWeight,\n 0\n );\n\n return {\n profileId: profile.profileId,\n effectiveResponse:\n \"normalized-point-splitting-kernel\",\n coordinateSystem:\n \"native-sensor-physical\",\n components: response.components.map(\n (component) => ({\n offsetMicrometers: {\n ...component.offsetMicrometers\n },\n normalizedWeight:\n component.normalizedWeight\n })\n ),\n normalizedWeightSum,\n throughputIncluded: false,\n spectralTransmissionIncluded: false,\n fieldDependenceIncluded: false,\n wavelengthDependenceIncluded: false,\n polarizationDependenceIncluded: false,\n microlensResponseIncluded: false,\n coverFilterStackEffectsIncluded: false,\n wholeSensorOpticalStackResponse: false,\n provenance: {\n profile: profile.evidence,\n antiAliasingResponse:\n response.evidence\n }\n };\n}\n"]}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* frequency and photon energy using exact SI constants. Photon energy uses exact SI h and c with
|
|
10
|
-
* vacuum wavelength. Air wavelength requires an exact-wavelength sourced phase index and atmosphere
|
|
11
|
-
* compatibility; lambdaVacuum = n*lambdaAir. Retained refractive-index uncertainty is not an
|
|
12
|
-
* automatically propagated photon-energy uncertainty.
|
|
2
|
+
* Photon energy and optical frequency from wavelength, using the exact SI values of the Planck
|
|
3
|
+
* constant h and the speed of light c (E = h·c / λ_vacuum).
|
|
4
|
+
*
|
|
5
|
+
* The formula needs the vacuum wavelength. An air wavelength is converted with
|
|
6
|
+
* λ_vacuum = n·λ_air, which requires a sourced phase refractive index n of air at that exact
|
|
7
|
+
* wavelength, for matching atmospheric conditions. The refractive index's uncertainty is kept, but
|
|
8
|
+
* it is not automatically carried through to the photon energy.
|
|
13
9
|
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
14
10
|
* limits.
|
|
15
11
|
*/
|
|
@@ -69,29 +65,27 @@ export interface PhotonEnergyFromWavelength {
|
|
|
69
65
|
inputUncertaintyPropagated: false;
|
|
70
66
|
}
|
|
71
67
|
/**
|
|
72
|
-
*
|
|
73
|
-
* missing required fields and
|
|
68
|
+
* Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,
|
|
69
|
+
* missing required fields and inconsistent scientific data are rejected.
|
|
74
70
|
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* @
|
|
79
|
-
* @returns SourcedAirPhaseRefractiveIndex. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
71
|
+
* The index is the phase refractive index n of air at one exact wavelength, from a cited source, for
|
|
72
|
+
* stated atmospheric conditions. It converts air to vacuum wavelength: λ_vacuum = n·λ_air.
|
|
73
|
+
* @param value - Untrusted data. TypeScript types alone are not validation.
|
|
74
|
+
* @returns The result. Success does not imply calibration.
|
|
80
75
|
*
|
|
81
|
-
* @see docs/API_REFERENCE.md for the
|
|
76
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
82
77
|
*/
|
|
83
78
|
export declare function parseSourcedAirPhaseRefractiveIndex(value: unknown): SourcedAirPhaseRefractiveIndex;
|
|
84
79
|
/**
|
|
85
|
-
*
|
|
86
|
-
* frequency and photon energy using exact SI constants.
|
|
80
|
+
* Converts a vacuum wavelength, or an air wavelength with its stated atmosphere, into optical
|
|
81
|
+
* frequency and photon energy using the exact SI constants h and c.
|
|
87
82
|
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
* @param input -
|
|
92
|
-
* @returns
|
|
83
|
+
* An air wavelength needs a sourced phase refractive index for that exact wavelength and matching
|
|
84
|
+
* atmosphere; λ_vacuum = n·λ_air. The index's uncertainty is kept but not automatically carried
|
|
85
|
+
* through to the photon energy.
|
|
86
|
+
* @param input - The input; see `CalculatePhotonEnergyFromWavelengthInput` for its fields, units and coordinates.
|
|
87
|
+
* @returns The result. Success does not imply calibration.
|
|
93
88
|
*
|
|
94
|
-
* @see docs/API_REFERENCE.md for the
|
|
89
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
95
90
|
*/
|
|
96
91
|
export declare function calculatePhotonEnergyFromWavelength(input: CalculatePhotonEnergyFromWavelengthInput): CalculationResult<PhotonEnergyFromWavelength>;
|
|
97
|
-
//# sourceMappingURL=photon-energy.d.ts.map
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* frequency and photon energy using exact SI constants. Photon energy uses exact SI h and c with
|
|
11
|
-
* vacuum wavelength. Air wavelength requires an exact-wavelength sourced phase index and atmosphere
|
|
12
|
-
* compatibility; lambdaVacuum = n*lambdaAir. Retained refractive-index uncertainty is not an
|
|
13
|
-
* automatically propagated photon-energy uncertainty.
|
|
3
|
+
* Photon energy and optical frequency from wavelength, using the exact SI values of the Planck
|
|
4
|
+
* constant h and the speed of light c (E = h·c / λ_vacuum).
|
|
5
|
+
*
|
|
6
|
+
* The formula needs the vacuum wavelength. An air wavelength is converted with
|
|
7
|
+
* λ_vacuum = n·λ_air, which requires a sourced phase refractive index n of air at that exact
|
|
8
|
+
* wavelength, for matching atmospheric conditions. The refractive index's uncertainty is kept, but
|
|
9
|
+
* it is not automatically carried through to the photon energy.
|
|
14
10
|
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
15
11
|
* limits.
|
|
16
12
|
*/
|
|
@@ -18,15 +14,18 @@ import { calculatedResult } from "../core/calculation-result.js";
|
|
|
18
14
|
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
19
15
|
import { parseEvidenceList } from "../core/evidence-provenance.js";
|
|
20
16
|
import { InvalidScientificInputError } from "../core/validation.js";
|
|
17
|
+
import { requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields, UNCERTAINTY_VARIANT_FIELDS } from "../core/record-validation.js";
|
|
21
18
|
const PLANCK_CONSTANT_JOULE_SECONDS = 6.62607015e-34;
|
|
22
19
|
const SPEED_OF_LIGHT_METERS_PER_SECOND = 299_792_458;
|
|
23
20
|
const NANOMETERS_TO_METERS = 1e-9;
|
|
24
|
-
function requireRecord(value, path) {
|
|
21
|
+
function requireRecord(value, path, allowedKeys) {
|
|
25
22
|
if (typeof value !== "object" ||
|
|
26
23
|
value === null ||
|
|
27
24
|
Array.isArray(value)) {
|
|
28
25
|
throw new InvalidConfigurationError(path + " must be an object.");
|
|
29
26
|
}
|
|
27
|
+
if (allowedKeys !== null)
|
|
28
|
+
rejectUnknownFields(value, allowedKeys, path);
|
|
30
29
|
return value;
|
|
31
30
|
}
|
|
32
31
|
function requireFinite(value, path) {
|
|
@@ -53,7 +52,8 @@ function requireFraction(value, path) {
|
|
|
53
52
|
return parsed;
|
|
54
53
|
}
|
|
55
54
|
function parseUncertainty(value, path) {
|
|
56
|
-
const record = requireRecord(value, path);
|
|
55
|
+
const record = requireRecord(value, path, null);
|
|
56
|
+
rejectUnknownVariantFields(record, "kind", UNCERTAINTY_VARIANT_FIELDS, path);
|
|
57
57
|
if (record.kind === "relative") {
|
|
58
58
|
const fraction = requireFinite(record.fraction, path + ".fraction");
|
|
59
59
|
if (fraction < 0) {
|
|
@@ -87,7 +87,7 @@ function parseUncertainty(value, path) {
|
|
|
87
87
|
throw new InvalidConfigurationError(path + ".kind is invalid.");
|
|
88
88
|
}
|
|
89
89
|
function parseReferenceConditions(value, path) {
|
|
90
|
-
const record = requireRecord(value, path);
|
|
90
|
+
const record = requireRecord(value, path, ["temperatureC", "pressurePascal", "relativeHumidityFraction", "carbonDioxideMoleFraction"]);
|
|
91
91
|
const temperatureC = requireFinite(record.temperatureC, path + ".temperatureC");
|
|
92
92
|
const pressurePascal = requirePositiveFinite(record.pressurePascal, path + ".pressurePascal");
|
|
93
93
|
const relativeHumidityFraction = record.relativeHumidityFraction ===
|
|
@@ -118,7 +118,8 @@ function parseReferenceConditions(value, path) {
|
|
|
118
118
|
};
|
|
119
119
|
}
|
|
120
120
|
function parseConditionPolicy(value) {
|
|
121
|
-
const record = requireRecord(value, "airConditionPolicy");
|
|
121
|
+
const record = requireRecord(value, "airConditionPolicy", null);
|
|
122
|
+
rejectUnknownVariantFields(record, "kind", { "exact-match-required": ["kind"], "assume-compatible": ["kind", "limitation", "evidence"] }, "airConditionPolicy");
|
|
122
123
|
if (record.kind === "exact-match-required") {
|
|
123
124
|
return {
|
|
124
125
|
kind: "exact-match-required"
|
|
@@ -161,19 +162,18 @@ function conditionsMatch(reference, operating) {
|
|
|
161
162
|
return true;
|
|
162
163
|
}
|
|
163
164
|
/**
|
|
164
|
-
*
|
|
165
|
-
* missing required fields and
|
|
165
|
+
* Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,
|
|
166
|
+
* missing required fields and inconsistent scientific data are rejected.
|
|
166
167
|
*
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
* @
|
|
171
|
-
* @returns SourcedAirPhaseRefractiveIndex. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
168
|
+
* The index is the phase refractive index n of air at one exact wavelength, from a cited source, for
|
|
169
|
+
* stated atmospheric conditions. It converts air to vacuum wavelength: λ_vacuum = n·λ_air.
|
|
170
|
+
* @param value - Untrusted data. TypeScript types alone are not validation.
|
|
171
|
+
* @returns The result. Success does not imply calibration.
|
|
172
172
|
*
|
|
173
|
-
* @see docs/API_REFERENCE.md for the
|
|
173
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
174
174
|
*/
|
|
175
175
|
export function parseSourcedAirPhaseRefractiveIndex(value) {
|
|
176
|
-
const record = requireRecord(value, "airPhaseRefractiveIndex");
|
|
176
|
+
const record = requireRecord(value, "airPhaseRefractiveIndex", ["wavelengthBasis", "definition", "scientificStatus", "uncertainty", "referenceConditions", "wavelengthNanometers", "phaseRefractiveIndex", "evidence"]);
|
|
177
177
|
if (record.wavelengthBasis !== "air") {
|
|
178
178
|
throw new InvalidConfigurationError('airPhaseRefractiveIndex.wavelengthBasis must be "air".');
|
|
179
179
|
}
|
|
@@ -218,26 +218,34 @@ export function parseSourcedAirPhaseRefractiveIndex(value) {
|
|
|
218
218
|
};
|
|
219
219
|
}
|
|
220
220
|
/**
|
|
221
|
-
*
|
|
222
|
-
* frequency and photon energy using exact SI constants.
|
|
221
|
+
* Converts a vacuum wavelength, or an air wavelength with its stated atmosphere, into optical
|
|
222
|
+
* frequency and photon energy using the exact SI constants h and c.
|
|
223
223
|
*
|
|
224
|
-
*
|
|
225
|
-
*
|
|
226
|
-
*
|
|
227
|
-
* @param input -
|
|
228
|
-
* @returns
|
|
224
|
+
* An air wavelength needs a sourced phase refractive index for that exact wavelength and matching
|
|
225
|
+
* atmosphere; λ_vacuum = n·λ_air. The index's uncertainty is kept but not automatically carried
|
|
226
|
+
* through to the photon energy.
|
|
227
|
+
* @param input - The input; see `CalculatePhotonEnergyFromWavelengthInput` for its fields, units and coordinates.
|
|
228
|
+
* @returns The result. Success does not imply calibration.
|
|
229
229
|
*
|
|
230
|
-
* @see docs/API_REFERENCE.md for the
|
|
230
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
231
231
|
*/
|
|
232
232
|
export function calculatePhotonEnergyFromWavelength(input) {
|
|
233
|
-
|
|
233
|
+
requireInputKeys(input, "calculatePhotonEnergyFromWavelength", ["wavelengthNanometers", "wavelengthBasis", "airPhaseRefractiveIndex", "airOperatingConditions", "airConditionPolicy"]);
|
|
234
|
+
const wavelengthNanometers = input.wavelengthNanometers;
|
|
235
|
+
// A calculation input, not a configuration record, so a bad value is a scientific-input error.
|
|
236
|
+
if (typeof wavelengthNanometers !== "number" || !Number.isFinite(wavelengthNanometers)) {
|
|
237
|
+
throw new InvalidScientificInputError("wavelengthNanometers must be finite.");
|
|
238
|
+
}
|
|
239
|
+
if (wavelengthNanometers <= 0) {
|
|
240
|
+
throw new InvalidScientificInputError("wavelengthNanometers must be greater than zero.");
|
|
241
|
+
}
|
|
234
242
|
if (input.wavelengthBasis ===
|
|
235
243
|
"unspecified") {
|
|
236
244
|
throw new InvalidScientificInputError("wavelengthBasis must be resolved to air or vacuum before photon-energy calculation.");
|
|
237
245
|
}
|
|
238
246
|
if (input.wavelengthBasis !== "air" &&
|
|
239
247
|
input.wavelengthBasis !== "vacuum") {
|
|
240
|
-
throw new
|
|
248
|
+
throw new InvalidConfigurationError("wavelengthBasis is invalid.");
|
|
241
249
|
}
|
|
242
250
|
let vacuumWavelengthNanometers;
|
|
243
251
|
let wavelengthConversion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"photon-energy.js","sourceRoot":"","sources":["../../src/sensor/photon-energy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"photon-energy.js","sourceRoot":"","sources":["../../src/sensor/photon-energy.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Photon energy and optical frequency from wavelength, using the exact SI values of the Planck\n * constant h and the speed of light c (E = h·c / λ_vacuum).\n *\n * The formula needs the vacuum wavelength. An air wavelength is converted with\n * λ_vacuum = n·λ_air, which requires a sourced phase refractive index n of air at that exact\n * wavelength, for matching atmospheric conditions. The refractive index's uncertainty is kept, but\n * it is not automatically carried through to the photon energy.\n * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support\n * limits.\n */\n\nimport {\n calculatedResult,\n type CalculationResult\n} from \"../core/calculation-result.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport { InvalidScientificInputError } from \"../core/validation.js\";\nimport type {\n SensorSpectralResponseScientificStatus,\n SensorSpectralResponseUncertainty,\n SpectralWavelengthBasis\n} from \"./spectral-response.js\";\nimport { requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields, UNCERTAINTY_VARIANT_FIELDS } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nconst PLANCK_CONSTANT_JOULE_SECONDS =\n 6.62607015e-34;\nconst SPEED_OF_LIGHT_METERS_PER_SECOND =\n 299_792_458;\nconst NANOMETERS_TO_METERS = 1e-9;\n\nexport interface AirRefractiveIndexReferenceConditions {\n temperatureC: number;\n pressurePascal: number;\n relativeHumidityFraction?: number;\n carbonDioxideMoleFraction?: number;\n}\n\nexport interface SourcedAirPhaseRefractiveIndex {\n wavelengthNanometers: number;\n wavelengthBasis: \"air\";\n definition:\n \"vacuum-wavelength-divided-by-air-wavelength\";\n phaseRefractiveIndex: number;\n scientificStatus:\n SensorSpectralResponseScientificStatus;\n uncertainty:\n SensorSpectralResponseUncertainty;\n evidence: readonly EvidenceProvenance[];\n referenceConditions?:\n AirRefractiveIndexReferenceConditions;\n}\n\nexport type AirRefractiveIndexConditionPolicy =\n | {\n kind: \"exact-match-required\";\n }\n | {\n kind: \"assume-compatible\";\n limitation: string;\n evidence: readonly EvidenceProvenance[];\n };\n\nexport interface CalculatePhotonEnergyFromWavelengthInput {\n wavelengthNanometers: number;\n wavelengthBasis:\n SpectralWavelengthBasis;\n airPhaseRefractiveIndex?:\n SourcedAirPhaseRefractiveIndex;\n airOperatingConditions?:\n AirRefractiveIndexReferenceConditions;\n airConditionPolicy?:\n AirRefractiveIndexConditionPolicy;\n}\n\nexport interface PhotonEnergyFromWavelength {\n inputWavelengthNanometers: number;\n inputWavelengthBasis:\n Exclude<SpectralWavelengthBasis, \"unspecified\">;\n vacuumWavelengthNanometers: number;\n frequencyHertz: number;\n photonEnergyJoules: number;\n wavelengthConversion:\n | \"vacuum-identity\"\n | \"air-to-vacuum-via-phase-refractive-index\";\n exactSiConstants: {\n planckConstantJouleSeconds:\n 6.62607015e-34;\n speedOfLightMetersPerSecond:\n 299792458;\n };\n phaseRefractiveIndexUsed?: number;\n airRefractiveIndexScientificStatus?:\n SensorSpectralResponseScientificStatus;\n airRefractiveIndexUncertainty?:\n SensorSpectralResponseUncertainty;\n airRefractiveIndexReferenceConditions?:\n AirRefractiveIndexReferenceConditions;\n airRefractiveIndexEvidence?:\n readonly EvidenceProvenance[];\n airOperatingConditions?:\n AirRefractiveIndexReferenceConditions;\n airConditionPolicy?:\n AirRefractiveIndexConditionPolicy;\n airConditionCompatibility?:\n | \"exact-match\"\n | \"assumed-compatible\";\n airConditionAssumptionEvidence?:\n readonly EvidenceProvenance[];\n inputUncertaintyPropagated: false;\n}\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be finite.\"\n );\n }\n return value;\n}\n\nfunction requirePositiveFinite(\n value: unknown,\n path: string\n): number {\n const parsed =\n requireFinite(value, path);\n if (parsed <= 0) {\n throw new InvalidConfigurationError(\n path +\n \" must be greater than zero.\"\n );\n }\n return parsed;\n}\n\nfunction requireFraction(\n value: unknown,\n path: string\n): number {\n const parsed =\n requireFinite(value, path);\n if (parsed < 0 || parsed > 1) {\n throw new InvalidConfigurationError(\n path +\n \" must be a fraction from 0 through 1.\"\n );\n }\n return parsed;\n}\n\nfunction parseUncertainty(\n value: unknown,\n path: string\n): SensorSpectralResponseUncertainty {\n const record =\n requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", UNCERTAINTY_VARIANT_FIELDS, path);\n\n if (record.kind === \"relative\") {\n const fraction =\n requireFinite(\n record.fraction,\n path + \".fraction\"\n );\n if (fraction < 0) {\n throw new InvalidConfigurationError(\n path +\n \".fraction must be greater than or equal to zero.\"\n );\n }\n if (\n typeof record.basis !== \"string\" ||\n record.basis.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \".basis must be a non-empty string.\"\n );\n }\n return {\n kind: \"relative\",\n fraction,\n basis: record.basis\n };\n }\n\n if (\n record.kind === \"not-quantified\"\n ) {\n if (\n typeof record.limitation !==\n \"string\" ||\n record.limitation.trim().length ===\n 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \".limitation must be a non-empty string.\"\n );\n }\n return {\n kind: \"not-quantified\",\n limitation:\n record.limitation\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseReferenceConditions(\n value: unknown,\n path: string\n): AirRefractiveIndexReferenceConditions {\n const record =\n requireRecord(value, path, [\"temperatureC\", \"pressurePascal\", \"relativeHumidityFraction\", \"carbonDioxideMoleFraction\"]);\n\n const temperatureC =\n requireFinite(\n record.temperatureC,\n path + \".temperatureC\"\n );\n const pressurePascal =\n requirePositiveFinite(\n record.pressurePascal,\n path + \".pressurePascal\"\n );\n\n const relativeHumidityFraction =\n record.relativeHumidityFraction ===\n undefined\n ? undefined\n : requireFraction(\n record.relativeHumidityFraction,\n path +\n \".relativeHumidityFraction\"\n );\n\n const carbonDioxideMoleFraction =\n record.carbonDioxideMoleFraction ===\n undefined\n ? undefined\n : requireFraction(\n record.carbonDioxideMoleFraction,\n path +\n \".carbonDioxideMoleFraction\"\n );\n\n return {\n temperatureC,\n pressurePascal,\n ...(relativeHumidityFraction ===\n undefined\n ? {}\n : {\n relativeHumidityFraction\n }),\n ...(carbonDioxideMoleFraction ===\n undefined\n ? {}\n : {\n carbonDioxideMoleFraction\n })\n };\n}\n\nfunction parseConditionPolicy(\n value: unknown\n): AirRefractiveIndexConditionPolicy {\n const record = requireRecord(\n value,\n \"airConditionPolicy\", null\n );\n rejectUnknownVariantFields(record, \"kind\", { \"exact-match-required\": [\"kind\"], \"assume-compatible\": [\"kind\", \"limitation\", \"evidence\"] }, \"airConditionPolicy\");\n\n if (\n record.kind === \"exact-match-required\"\n ) {\n return {\n kind: \"exact-match-required\"\n };\n }\n\n if (\n record.kind === \"assume-compatible\"\n ) {\n if (\n typeof record.limitation !==\n \"string\" ||\n record.limitation.trim().length ===\n 0\n ) {\n throw new InvalidConfigurationError(\n \"airConditionPolicy.limitation must be a non-empty string.\"\n );\n }\n return {\n kind: \"assume-compatible\",\n limitation:\n record.limitation,\n evidence: parseEvidenceList(\n record.evidence,\n \"airConditionPolicy.evidence\"\n )\n };\n }\n\n throw new InvalidConfigurationError(\n \"airConditionPolicy.kind is invalid.\"\n );\n}\n\nfunction conditionsMatch(\n reference:\n AirRefractiveIndexReferenceConditions,\n operating:\n AirRefractiveIndexReferenceConditions\n): boolean {\n if (\n reference.temperatureC !==\n operating.temperatureC ||\n reference.pressurePascal !==\n operating.pressurePascal\n ) {\n return false;\n }\n if (\n reference.relativeHumidityFraction !==\n undefined &&\n reference.relativeHumidityFraction !==\n operating.relativeHumidityFraction\n ) {\n return false;\n }\n if (\n reference.carbonDioxideMoleFraction !==\n undefined &&\n reference.carbonDioxideMoleFraction !==\n operating.carbonDioxideMoleFraction\n ) {\n return false;\n }\n return true;\n}\n\n/**\n * Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,\n * missing required fields and inconsistent scientific data are rejected.\n *\n * The index is the phase refractive index n of air at one exact wavelength, from a cited source, for\n * stated atmospheric conditions. It converts air to vacuum wavelength: λ_vacuum = n·λ_air.\n * @param value - Untrusted data. TypeScript types alone are not validation.\n * @returns The result. Success does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function parseSourcedAirPhaseRefractiveIndex(\n value: unknown\n): SourcedAirPhaseRefractiveIndex {\n const record = requireRecord(\n value,\n \"airPhaseRefractiveIndex\", [\"wavelengthBasis\", \"definition\", \"scientificStatus\", \"uncertainty\", \"referenceConditions\", \"wavelengthNanometers\", \"phaseRefractiveIndex\", \"evidence\"]\n );\n\n if (\n record.wavelengthBasis !== \"air\"\n ) {\n throw new InvalidConfigurationError(\n 'airPhaseRefractiveIndex.wavelengthBasis must be \"air\".'\n );\n }\n if (\n record.definition !==\n \"vacuum-wavelength-divided-by-air-wavelength\"\n ) {\n throw new InvalidConfigurationError(\n \"airPhaseRefractiveIndex.definition is invalid.\"\n );\n }\n if (\n record.scientificStatus !==\n \"calibrated\" &&\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n \"airPhaseRefractiveIndex.scientificStatus is invalid.\"\n );\n }\n\n const uncertainty =\n parseUncertainty(\n record.uncertainty,\n \"airPhaseRefractiveIndex.uncertainty\"\n );\n const referenceConditions =\n record.referenceConditions ===\n undefined\n ? undefined\n : parseReferenceConditions(\n record.referenceConditions,\n \"airPhaseRefractiveIndex.referenceConditions\"\n );\n\n if (\n record.scientificStatus ===\n \"calibrated\" &&\n uncertainty.kind ===\n \"not-quantified\"\n ) {\n throw new InvalidConfigurationError(\n \"A calibrated air phase refractive index must declare quantified relative uncertainty.\"\n );\n }\n if (\n record.scientificStatus ===\n \"calibrated\" &&\n referenceConditions === undefined\n ) {\n throw new InvalidConfigurationError(\n \"A calibrated air phase refractive index must declare temperature and pressure reference conditions.\"\n );\n }\n\n return {\n wavelengthNanometers:\n requirePositiveFinite(\n record.wavelengthNanometers,\n \"airPhaseRefractiveIndex.wavelengthNanometers\"\n ),\n wavelengthBasis: \"air\",\n definition:\n \"vacuum-wavelength-divided-by-air-wavelength\",\n phaseRefractiveIndex:\n requirePositiveFinite(\n record.phaseRefractiveIndex,\n \"airPhaseRefractiveIndex.phaseRefractiveIndex\"\n ),\n scientificStatus:\n record.scientificStatus,\n uncertainty,\n evidence: parseEvidenceList(\n record.evidence,\n \"airPhaseRefractiveIndex.evidence\"\n ),\n ...(referenceConditions ===\n undefined\n ? {}\n : { referenceConditions })\n };\n}\n\n/**\n * Converts a vacuum wavelength, or an air wavelength with its stated atmosphere, into optical\n * frequency and photon energy using the exact SI constants h and c.\n *\n * An air wavelength needs a sourced phase refractive index for that exact wavelength and matching\n * atmosphere; λ_vacuum = n·λ_air. The index's uncertainty is kept but not automatically carried\n * through to the photon energy.\n * @param input - The input; see `CalculatePhotonEnergyFromWavelengthInput` for its fields, units and coordinates.\n * @returns The result. Success does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function calculatePhotonEnergyFromWavelength(\n input:\n CalculatePhotonEnergyFromWavelengthInput\n): CalculationResult<PhotonEnergyFromWavelength> {\n requireInputKeys(input, \"calculatePhotonEnergyFromWavelength\", [\"wavelengthNanometers\", \"wavelengthBasis\", \"airPhaseRefractiveIndex\", \"airOperatingConditions\", \"airConditionPolicy\"]);\n const wavelengthNanometers = input.wavelengthNanometers;\n // A calculation input, not a configuration record, so a bad value is a scientific-input error.\n if (typeof wavelengthNanometers !== \"number\" || !Number.isFinite(wavelengthNanometers)) {\n throw new InvalidScientificInputError(\"wavelengthNanometers must be finite.\");\n }\n if (wavelengthNanometers <= 0) {\n throw new InvalidScientificInputError(\"wavelengthNanometers must be greater than zero.\");\n }\n\n if (\n input.wavelengthBasis ===\n \"unspecified\"\n ) {\n throw new InvalidScientificInputError(\n \"wavelengthBasis must be resolved to air or vacuum before photon-energy calculation.\"\n );\n }\n\n if (\n input.wavelengthBasis !== \"air\" &&\n input.wavelengthBasis !== \"vacuum\"\n ) {\n throw new InvalidConfigurationError(\n \"wavelengthBasis is invalid.\"\n );\n }\n\n let vacuumWavelengthNanometers:\n number;\n let wavelengthConversion:\n PhotonEnergyFromWavelength[\"wavelengthConversion\"];\n let parsedAir:\n SourcedAirPhaseRefractiveIndex |\n undefined;\n\n let parsedConditionPolicy:\n AirRefractiveIndexConditionPolicy |\n undefined;\n let parsedOperatingConditions:\n AirRefractiveIndexReferenceConditions |\n undefined;\n let airConditionCompatibility:\n PhotonEnergyFromWavelength[\"airConditionCompatibility\"] |\n undefined;\n\n if (\n input.wavelengthBasis ===\n \"vacuum\"\n ) {\n if (\n input.airPhaseRefractiveIndex !==\n undefined ||\n input.airOperatingConditions !==\n undefined ||\n input.airConditionPolicy !==\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"Air refractive-index inputs must be omitted for vacuum-basis wavelengths.\"\n );\n }\n vacuumWavelengthNanometers =\n wavelengthNanometers;\n wavelengthConversion =\n \"vacuum-identity\";\n } else {\n if (\n input.airPhaseRefractiveIndex ===\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"airPhaseRefractiveIndex is required for air-basis photon-energy calculation.\"\n );\n }\n parsedAir =\n parseSourcedAirPhaseRefractiveIndex(\n input.airPhaseRefractiveIndex\n );\n\n if (\n parsedAir.wavelengthNanometers !==\n wavelengthNanometers\n ) {\n throw new InvalidScientificInputError(\n \"airPhaseRefractiveIndex wavelength must exactly match wavelengthNanometers.\"\n );\n }\n\n if (\n input.airConditionPolicy ===\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"airConditionPolicy is required for air-basis photon-energy calculation.\"\n );\n }\n parsedConditionPolicy =\n parseConditionPolicy(\n input.airConditionPolicy\n );\n\n if (\n parsedConditionPolicy.kind ===\n \"exact-match-required\"\n ) {\n if (\n parsedAir.referenceConditions ===\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"Exact air-condition matching requires refractive-index reference conditions.\"\n );\n }\n if (\n input.airOperatingConditions ===\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"airOperatingConditions is required when exact air-condition matching is selected.\"\n );\n }\n parsedOperatingConditions =\n parseReferenceConditions(\n input.airOperatingConditions,\n \"airOperatingConditions\"\n );\n if (\n !conditionsMatch(\n parsedAir.referenceConditions,\n parsedOperatingConditions\n )\n ) {\n throw new InvalidScientificInputError(\n \"airOperatingConditions must match the refractive-index reference conditions.\"\n );\n }\n airConditionCompatibility =\n \"exact-match\";\n } else {\n parsedOperatingConditions =\n input.airOperatingConditions ===\n undefined\n ? undefined\n : parseReferenceConditions(\n input.airOperatingConditions,\n \"airOperatingConditions\"\n );\n airConditionCompatibility =\n \"assumed-compatible\";\n }\n\n vacuumWavelengthNanometers =\n wavelengthNanometers *\n parsedAir.phaseRefractiveIndex;\n wavelengthConversion =\n \"air-to-vacuum-via-phase-refractive-index\";\n }\n\n const vacuumWavelengthMeters =\n vacuumWavelengthNanometers *\n NANOMETERS_TO_METERS;\n const frequencyHertz =\n SPEED_OF_LIGHT_METERS_PER_SECOND /\n vacuumWavelengthMeters;\n const photonEnergyJoules =\n PLANCK_CONSTANT_JOULE_SECONDS *\n frequencyHertz;\n\n if (\n !Number.isFinite(\n vacuumWavelengthNanometers\n ) ||\n !Number.isFinite(frequencyHertz) ||\n !Number.isFinite(\n photonEnergyJoules\n )\n ) {\n throw new InvalidScientificInputError(\n \"Photon-energy calculation must remain finite.\"\n );\n }\n\n return calculatedResult(\n {\n inputWavelengthNanometers:\n wavelengthNanometers,\n inputWavelengthBasis:\n input.wavelengthBasis,\n vacuumWavelengthNanometers,\n frequencyHertz,\n photonEnergyJoules,\n wavelengthConversion,\n exactSiConstants: {\n planckConstantJouleSeconds:\n PLANCK_CONSTANT_JOULE_SECONDS,\n speedOfLightMetersPerSecond:\n SPEED_OF_LIGHT_METERS_PER_SECOND\n },\n ...(parsedAir === undefined\n ? {}\n : {\n phaseRefractiveIndexUsed:\n parsedAir\n .phaseRefractiveIndex,\n airRefractiveIndexScientificStatus:\n parsedAir\n .scientificStatus,\n airRefractiveIndexUncertainty:\n parsedAir.uncertainty,\n ...(parsedAir\n .referenceConditions ===\n undefined\n ? {}\n : {\n airRefractiveIndexReferenceConditions:\n parsedAir\n .referenceConditions\n }),\n airRefractiveIndexEvidence:\n parsedAir.evidence,\n ...(parsedOperatingConditions ===\n undefined\n ? {}\n : {\n airOperatingConditions:\n parsedOperatingConditions\n }),\n ...(parsedConditionPolicy ===\n undefined\n ? {}\n : {\n airConditionPolicy:\n parsedConditionPolicy\n }),\n ...(airConditionCompatibility ===\n undefined\n ? {}\n : {\n airConditionCompatibility\n }),\n ...(parsedConditionPolicy?.kind ===\n \"assume-compatible\"\n ? {\n airConditionAssumptionEvidence:\n parsedConditionPolicy\n .evidence\n }\n : {})\n }),\n inputUncertaintyPropagated:\n false\n },\n \"photon-energy-from-spectral-wavelength\",\n \"1.0.0\",\n [\n \"Planck constant h and vacuum speed of light c use their exact SI defining values.\",\n \"Photon energy is h times optical frequency; frequency is derived from vacuum wavelength.\",\n \"Vacuum-basis wavelength requires no refractive-index correction.\",\n \"Air-basis wavelength is converted with the phase refractive index definition n = lambda_vacuum / lambda_air at the exact requested wavelength.\",\n \"Air refractive index varies with wavelength and atmospheric conditions; this function never substitutes n = 1.\",\n \"Air-basis conversion requires either exact matching to the refractive-index reference atmosphere or an explicit evidence-backed compatibility assumption.\",\n \"Input refractive-index uncertainty is preserved as metadata but is not propagated into photon-energy uncertainty by this foundation.\",\n \"This calculation does not apply QE, calculate photon rate, generate electrons, integrate exposure time, or model saturation/noise.\"\n ]\n );\n}\n"]}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* capacity is
|
|
6
|
-
* temperature. The
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* expectation-domain headroom without nonlinear storage simulation. Physical storage capacity is a
|
|
10
|
-
* source-specific total stored-electron limit tied to site, operating state and temperature. The
|
|
11
|
-
* assessment compares complete expected charge; it does not clamp realizations or infer
|
|
12
|
-
* overflow/blooming. Camera saturation and ADC/readout thresholds remain distinct.
|
|
2
|
+
* Physical charge capacity (full-well capacity): the most electrons a sensor site can physically
|
|
3
|
+
* store, and a check of the expected charge against it.
|
|
4
|
+
*
|
|
5
|
+
* The capacity is the total stored-electron limit given by a specific source, for a specific site,
|
|
6
|
+
* operating state and temperature. The check compares the complete expected charge with it. It does
|
|
7
|
+
* not clip random (noise) realizations and does not model overflow or blooming. Camera saturation
|
|
8
|
+
* capacity and ADC or readout thresholds are separate limits.
|
|
13
9
|
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
14
10
|
* limits.
|
|
15
11
|
*/
|
|
@@ -100,31 +96,25 @@ export interface SensorPhysicalChargeCapacityAssessment {
|
|
|
100
96
|
};
|
|
101
97
|
}
|
|
102
98
|
/**
|
|
103
|
-
*
|
|
104
|
-
* missing required fields and
|
|
99
|
+
* Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,
|
|
100
|
+
* missing required fields and inconsistent scientific data are rejected.
|
|
105
101
|
*
|
|
106
|
-
*
|
|
107
|
-
* state and temperature.
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
111
|
-
* @returns SensorPhysicalChargeCapacityProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
102
|
+
* The capacity is a total stored-electron limit from a specific source, tied to a site, operating
|
|
103
|
+
* state and temperature. Camera saturation capacity and ADC or readout thresholds are separate.
|
|
104
|
+
* @param value - Untrusted data. TypeScript types alone are not validation.
|
|
105
|
+
* @returns The result. Success does not imply calibration.
|
|
112
106
|
*
|
|
113
|
-
* @see docs/API_REFERENCE.md for the
|
|
107
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
114
108
|
*/
|
|
115
109
|
export declare function parseSensorPhysicalChargeCapacityProfile(value: unknown): SensorPhysicalChargeCapacityProfile;
|
|
116
110
|
/**
|
|
117
|
-
*
|
|
118
|
-
*
|
|
111
|
+
* Compares the complete expected stored electrons with the physical capacity that applies, and
|
|
112
|
+
* reports the remaining headroom in expected electrons. Non-linear storage is not simulated.
|
|
119
113
|
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
* distinct.
|
|
124
|
-
* @param input - AssessSensorPhysicalChargeCapacityInput. See the linked contract for coordinate, unit and profile binding semantics.
|
|
125
|
-
* @returns CalculationResult<SensorPhysicalChargeCapacityAssessment>. Read structured blockers before consuming an authorization.
|
|
114
|
+
* It does not clip random realizations and does not model overflow or blooming.
|
|
115
|
+
* @param input - The input; see `AssessSensorPhysicalChargeCapacityInput` for its fields, units and coordinates.
|
|
116
|
+
* @returns The assessment. Read its structured blockers before acting on an authorization.
|
|
126
117
|
*
|
|
127
|
-
* @see docs/API_REFERENCE.md for the
|
|
118
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
128
119
|
*/
|
|
129
120
|
export declare function assessSensorPhysicalChargeCapacity(input: AssessSensorPhysicalChargeCapacityInput): CalculationResult<SensorPhysicalChargeCapacityAssessment>;
|
|
130
|
-
//# sourceMappingURL=physical-charge-capacity.d.ts.map
|