@photivra/engine 0.4.0 → 0.5.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 CHANGED
@@ -4,6 +4,17 @@ Notable public changes to `@photivra/engine` are documented here.
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.5.0 - 2026-09-26
8
+
9
+ ### Added
10
+
11
+ - `calculateInverseRadialDistortionMappings()` and `calculateInverseLateralChromaticAberrationMappings()` for multi-point inverse field sampling with one profile-validation/provenance boundary per batch; scalar APIs remain unchanged.
12
+ - `mapOrientedPhysicalUvToImagePlanePoint()` and `mapImagePlanePointToOrientedPhysicalUv()` for explicit round-trip conversion between normalized oriented physical raster regions (+Y down) and the pre-orientation optical image plane (+Y up), preserving all four capture orientations and asymmetric/off-axis bounds.
13
+
14
+ ### Changed
15
+
16
+ - Engine API contract advances to `0.34.0`. The composed POC remains `0.20.0`; this release adds standalone coordinate and batch lens-field APIs without composing lens-field effects into the POC.
17
+
7
18
  ## 0.4.0 - 2026-09-25
8
19
 
9
20
  ### Added
package/CITATION.cff CHANGED
@@ -9,7 +9,7 @@ abstract: "An open TypeScript engine for the science and mathematics of photogra
9
9
  repository-code: "https://github.com/photivra/photivra"
10
10
  url: "https://photivra.com"
11
11
  license: "Apache-2.0"
12
- version: "0.4.0"
12
+ version: "0.5.0"
13
13
  keywords:
14
14
  - photography
15
15
  - camera optics
package/README.md CHANGED
@@ -63,7 +63,7 @@ The root package exports deterministic or explicitly labeled approximate models
63
63
  - [centered and asymmetric rectilinear field of view, with optional focus-aware thin-lens projection](docs/USAGE.md#field-of-view);
64
64
  - [physical vs diagonal-based 35 mm-equivalent focal length](docs/USAGE.md#actual-and-35-mm-equivalent-focal-length);
65
65
  - [caller-declared focus-breathing projection/FOV approximation](docs/USAGE.md#focus-breathing-projection);
66
- - [generic invertible radial distortion mapping](docs/USAGE.md#radial-lens-distortion-mapping);
66
+ - [generic invertible radial distortion mapping](docs/USAGE.md#radial-lens-distortion-mapping), including multi-point inverse batch sampling;
67
67
  - [generic RGB-channel lateral chromatic-aberration field mapping](docs/USAGE.md#lateral-chromatic-aberration-mapping);
68
68
  - [generic linear-light illumination-vignetting approximation](docs/USAGE.md#illumination-vignetting);
69
69
  - [Gaussian thin-lens image distance and magnification](docs/USAGE.md#thin-lens-image-distance-and-magnification);
@@ -86,6 +86,7 @@ The root package exports deterministic or explicitly labeled approximate models
86
86
  - [sensor imaging-area, native-raster, crop-factor, megapixel, and 2D sampling metrics](docs/USAGE.md#sensor-imaging-area-and-native-raster);
87
87
  - [provenance-aware sensor architecture/capability metadata](docs/USAGE.md#sensor-architecture-metadata);
88
88
  - [capture orientation, active sensor area, and output geometry](docs/USAGE.md#capture-orientation-active-area-and-output-geometry);
89
+ - explicit oriented-physical-raster ↔ pre-orientation image-plane metric coordinate transforms for renderer/lens-field integration;
89
90
  - [centered crop and subject-height framing crop](docs/USAGE.md#centered-crop-and-subject-framing-crop);
90
91
  - [radiometry prerequisite/readiness assessment](docs/USAGE.md#radiometry-readiness);
91
92
  - [mean photoelectron conversion and basic shot-noise/read-noise SNR primitives](docs/USAGE.md#photoelectron-and-snr-primitives).
@@ -177,8 +178,8 @@ The calling application can then use those results while keeping the underlying
177
178
 
178
179
  ## Status
179
180
 
180
- - Repository package version: `0.4.0`
181
- - Engine API contract: `0.32.0`
181
+ - Repository package version: `0.5.0`
182
+ - Engine API contract: `0.34.0`
182
183
  - Composed POC simulation API contract: `0.20.0`
183
184
  - Stability: pre-1.0 / proof of concept
184
185
 
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * This constant is intentionally independent of the package version so
5
5
  * schema/API compatibility can be discussed explicitly.
6
6
  */
7
- export declare const ENGINE_API_VERSION: "0.32.0";
7
+ export declare const ENGINE_API_VERSION: "0.34.0";
8
8
  export { approximationResult, calibratedResult, calculatedResult, estimatedResult, validateCalculationQuality, type AbsoluteUncertaintyEstimate, type CalculationProvenance, type CalculationQuality, type CalculationResult, type CalculationValidRange, type ProvenanceKind, type RelativeUncertaintyEstimate, type UncertaintyConfidence, type UncertaintyEstimate, type UncertaintySource } from "./core/calculation-result.js";
9
9
  export { InvalidScientificInputError, InvalidScientificResultError } from "./core/validation.js";
10
10
  export { IMAGE_FORMATION_CONTRACT_VERSION, getImageFormationContract, type ImageFormationContract, type ImageFormationCoordinateSpaceContract, type ImageFormationCoordinateSpaceId, type ImageFormationDomainId, type ImageFormationEffectId, type ImageFormationEffectPlacement, type ImageFormationImplementationStatus, type ImageFormationRendererContract, type ImageFormationStageContract, type ImageFormationStageId, type ImageFormationTemporalContract } from "./core/image-formation.js";
@@ -16,15 +16,15 @@ export { calculateImagingAreaMetrics, calculateSensorGeometryMetrics, type Calcu
16
16
  export { parseSensorArchitectureProfile, type SensorArchitectureFactProvenance, type SensorArchitectureProfile, type SensorArchitectureReuseStatus, type SensorArchitectureSourceKind, type SensorColorSamplingFamily, type SensorIlluminationArchitecture, type SensorIntegrationArchitecture, type SensorReadoutArchitecture, type SourcedSensorArchitectureFact } from "./sensor/architecture.js";
17
17
  export { calculateCenteredCrop, type CalculateCenteredCropInput, type CenteredCrop } from "./output/crop.js";
18
18
  export { calculateSubjectFramingCrop, type CalculateSubjectFramingCropInput, type SubjectFramingCrop } from "./output/subject-framing-crop.js";
19
- export { calculateActiveCaptureFieldOfView, calculateOutputFieldOfView, resolveCaptureGeometry, transformNativeRasterPointToOriented, transformNativeRasterRectToOriented, transformNativeRasterVectorToOriented, transformOrientedRasterPointToNative, transformOrientedRasterRectToNative, transformOrientedRasterVectorToNative, type ActiveCaptureFieldOfView, type CalculateActiveCaptureFieldOfViewInput, type CalculateOutputFieldOfViewInput, type CaptureOrientation, type OutputFieldOfView, type PhysicalBoundsFromOpticalAxisMm, type RasterPoint, type RasterRect, type RasterVector, type ResolveCaptureGeometryInput, type ResolvedCaptureGeometry, type TransformRasterPointInput, type TransformRasterRectInput, type TransformRasterVectorInput } from "./output/capture-geometry.js";
19
+ export { calculateActiveCaptureFieldOfView, calculateOutputFieldOfView, mapImagePlanePointToOrientedPhysicalUv, mapOrientedPhysicalUvToImagePlanePoint, resolveCaptureGeometry, transformNativeRasterPointToOriented, transformNativeRasterRectToOriented, transformNativeRasterVectorToOriented, transformOrientedRasterPointToNative, transformOrientedRasterRectToNative, transformOrientedRasterVectorToNative, type ActiveCaptureFieldOfView, type CalculateActiveCaptureFieldOfViewInput, type CalculateOutputFieldOfViewInput, type CaptureOrientation, type ImagePlaneMetricPointMm, type MapImagePlanePointToOrientedPhysicalUvInput, type MapOrientedPhysicalUvToImagePlaneInput, type NormalizedRasterUv, type OutputFieldOfView, type PhysicalBoundsFromOpticalAxisMm, type RasterPoint, type RasterRect, type RasterVector, type ResolveCaptureGeometryInput, type ResolvedCaptureGeometry, type TransformRasterPointInput, type TransformRasterRectInput, type TransformRasterVectorInput } from "./output/capture-geometry.js";
20
20
  export { calculateIdealApertureGeometry, type ApertureVertex, type CalculateIdealApertureInput, type IdealApertureGeometry } from "./optics/aperture.js";
21
21
  export { calculateAiryDisk, type AiryDisk, type CalculateAiryDiskInput } from "./optics/diffraction.js";
22
22
  export { estimateEquivalentViewingCircleOfConfusion, type EquivalentViewingCircleOfConfusion, type EstimateEquivalentViewingCircleOfConfusionInput } from "./optics/circle-of-confusion.js";
23
23
  export { calculateThinLensImageDistance, type CalculateThinLensImageDistanceInput, type ThinLensImageDistance } from "./optics/thin-lens.js";
24
24
  export { calculateDefocusCircle, calculateDepthOfField, type CalculateDefocusCircleInput, type CalculateDepthOfFieldInput, type DefocusCircle, type DepthOfField } from "./optics/depth-of-field.js";
25
25
  export { calculateFocusBreathingFieldOfView, calculateFocusBreathingProjection, type CalculateFocusBreathingFieldOfViewInput, type CalculateFocusBreathingProjectionInput, type FocusBreathingFieldOfView, type FocusBreathingProjection } from "./optics/focus-breathing.js";
26
- export { calculateInverseRadialDistortionMapping, calculateRadialDistortionMapping, type CalculateInverseRadialDistortionMappingInput, type CalculateRadialDistortionMappingInput, type InverseRadialDistortionMapping, type LensFieldPointMm, type RadialDistortionCoefficients, type RadialDistortionMapping, type RadialDistortionProfile } from "./optics/radial-distortion.js";
27
- export { calculateInverseLateralChromaticAberrationMapping, calculateLateralChromaticAberrationMapping, type CalculateInverseLateralChromaticAberrationMappingInput, type CalculateLateralChromaticAberrationMappingInput, type ChannelSeparationVectorMm, type InverseLateralChromaticAberrationChannelMapping, type InverseLateralChromaticAberrationMapping, type LateralChromaticAberrationChannel, type LateralChromaticAberrationChannelMapping, type LateralChromaticAberrationMapping, type LateralChromaticAberrationProfile, type LateralChromaticAberrationSeparation } from "./optics/lateral-chromatic-aberration.js";
26
+ export { calculateInverseRadialDistortionMapping, calculateInverseRadialDistortionMappings, calculateRadialDistortionMapping, type CalculateInverseRadialDistortionMappingInput, type CalculateInverseRadialDistortionMappingsInput, type CalculateRadialDistortionMappingInput, type InverseRadialDistortionMapping, type InverseRadialDistortionMappings, type LensFieldPointMm, type RadialDistortionCoefficients, type RadialDistortionMapping, type RadialDistortionProfile } from "./optics/radial-distortion.js";
27
+ export { calculateInverseLateralChromaticAberrationMapping, calculateInverseLateralChromaticAberrationMappings, calculateLateralChromaticAberrationMapping, type CalculateInverseLateralChromaticAberrationMappingInput, type CalculateInverseLateralChromaticAberrationMappingsInput, type CalculateLateralChromaticAberrationMappingInput, type ChannelSeparationVectorMm, type InverseLateralChromaticAberrationChannelMapping, type InverseLateralChromaticAberrationMapping, type InverseLateralChromaticAberrationMappings, type LateralChromaticAberrationChannel, type LateralChromaticAberrationChannelMapping, type LateralChromaticAberrationMapping, type LateralChromaticAberrationProfile, type LateralChromaticAberrationSeparation } from "./optics/lateral-chromatic-aberration.js";
28
28
  export { calculateIlluminationVignetting, type CalculateIlluminationVignettingInput, type IlluminationVignetting, type IlluminationVignettingCoefficients, type IlluminationVignettingProfile } from "./optics/illumination-vignetting.js";
29
29
  export { PSF_FOUNDATION_VERSION, calculatePsfFoundationComponents, getPsfFoundationContract, type CalculatePsfFoundationComponentsInput, type PsfContributionContract, type PsfContributionId, type PsfContributionStatus, type PsfFoundationComponents, type PsfFoundationContract } from "./optics/psf-foundation.js";
30
30
  export type { CameraConfiguration, CameraSupport, ExposureConfiguration, FocusConfiguration, LensConfiguration, SensorConfiguration, StabilizationConfiguration } from "./schema/camera.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@
5
5
  * This constant is intentionally independent of the package version so
6
6
  * schema/API compatibility can be discussed explicitly.
7
7
  */
8
- export const ENGINE_API_VERSION = "0.32.0";
8
+ export const ENGINE_API_VERSION = "0.34.0";
9
9
  export { approximationResult, calibratedResult, calculatedResult, estimatedResult, validateCalculationQuality } from "./core/calculation-result.js";
10
10
  export { InvalidScientificInputError, InvalidScientificResultError } from "./core/validation.js";
11
11
  export { IMAGE_FORMATION_CONTRACT_VERSION, getImageFormationContract } from "./core/image-formation.js";
@@ -17,15 +17,15 @@ export { calculateImagingAreaMetrics, calculateSensorGeometryMetrics } from "./s
17
17
  export { parseSensorArchitectureProfile } from "./sensor/architecture.js";
18
18
  export { calculateCenteredCrop } from "./output/crop.js";
19
19
  export { calculateSubjectFramingCrop } from "./output/subject-framing-crop.js";
20
- export { calculateActiveCaptureFieldOfView, calculateOutputFieldOfView, resolveCaptureGeometry, transformNativeRasterPointToOriented, transformNativeRasterRectToOriented, transformNativeRasterVectorToOriented, transformOrientedRasterPointToNative, transformOrientedRasterRectToNative, transformOrientedRasterVectorToNative } from "./output/capture-geometry.js";
20
+ export { calculateActiveCaptureFieldOfView, calculateOutputFieldOfView, mapImagePlanePointToOrientedPhysicalUv, mapOrientedPhysicalUvToImagePlanePoint, resolveCaptureGeometry, transformNativeRasterPointToOriented, transformNativeRasterRectToOriented, transformNativeRasterVectorToOriented, transformOrientedRasterPointToNative, transformOrientedRasterRectToNative, transformOrientedRasterVectorToNative } from "./output/capture-geometry.js";
21
21
  export { calculateIdealApertureGeometry } from "./optics/aperture.js";
22
22
  export { calculateAiryDisk } from "./optics/diffraction.js";
23
23
  export { estimateEquivalentViewingCircleOfConfusion } from "./optics/circle-of-confusion.js";
24
24
  export { calculateThinLensImageDistance } from "./optics/thin-lens.js";
25
25
  export { calculateDefocusCircle, calculateDepthOfField } from "./optics/depth-of-field.js";
26
26
  export { calculateFocusBreathingFieldOfView, calculateFocusBreathingProjection } from "./optics/focus-breathing.js";
27
- export { calculateInverseRadialDistortionMapping, calculateRadialDistortionMapping } from "./optics/radial-distortion.js";
28
- export { calculateInverseLateralChromaticAberrationMapping, calculateLateralChromaticAberrationMapping } from "./optics/lateral-chromatic-aberration.js";
27
+ export { calculateInverseRadialDistortionMapping, calculateInverseRadialDistortionMappings, calculateRadialDistortionMapping } from "./optics/radial-distortion.js";
28
+ export { calculateInverseLateralChromaticAberrationMapping, calculateInverseLateralChromaticAberrationMappings, calculateLateralChromaticAberrationMapping } from "./optics/lateral-chromatic-aberration.js";
29
29
  export { calculateIlluminationVignetting } from "./optics/illumination-vignetting.js";
30
30
  export { PSF_FOUNDATION_VERSION, calculatePsfFoundationComponents, getPsfFoundationContract } from "./optics/psf-foundation.js";
31
31
  export { calculateProjectedMotionBlur } from "./motion/projected-motion.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAiB,CAAC;AAEpD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,0BAA0B,EAW3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EAY1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAK3B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,4BAA4B,EAG7B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,kCAAkC,EAGnC,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,mBAAmB,EAGpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAO/B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,8BAA8B,EAU/B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,qBAAqB,EAGtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,2BAA2B,EAG5B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,iCAAiC,EACjC,0BAA0B,EAC1B,sBAAsB,EACtB,oCAAoC,EACpC,mCAAmC,EACnC,qCAAqC,EACrC,oCAAoC,EACpC,mCAAmC,EACnC,qCAAqC,EAetC,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,8BAA8B,EAI/B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EAGlB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,0CAA0C,EAG3C,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,8BAA8B,EAG/B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EAKtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,kCAAkC,EAClC,iCAAiC,EAKlC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,uCAAuC,EACvC,gCAAgC,EAQjC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,iDAAiD,EACjD,0CAA0C,EAW3C,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACL,+BAA+B,EAKhC,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,sBAAsB,EACtB,gCAAgC,EAChC,wBAAwB,EAOzB,MAAM,4BAA4B,CAAC;AAqBpC,OAAO,EACL,4BAA4B,EAG7B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,mCAAmC,EAMpC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gCAAgC,EAChC,iCAAiC,EAOlC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,uBAAuB,EAIxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EAIvB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAchC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EAGlB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAiB,CAAC;AAEpD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,0BAA0B,EAW3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EAY1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAK3B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,4BAA4B,EAG7B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,kCAAkC,EAGnC,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,mBAAmB,EAGpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAO/B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,8BAA8B,EAU/B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,qBAAqB,EAGtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,2BAA2B,EAG5B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,iCAAiC,EACjC,0BAA0B,EAC1B,sCAAsC,EACtC,sCAAsC,EACtC,sBAAsB,EACtB,oCAAoC,EACpC,mCAAmC,EACnC,qCAAqC,EACrC,oCAAoC,EACpC,mCAAmC,EACnC,qCAAqC,EAmBtC,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,8BAA8B,EAI/B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EAGlB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,0CAA0C,EAG3C,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,8BAA8B,EAG/B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EAKtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,kCAAkC,EAClC,iCAAiC,EAKlC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,uCAAuC,EACvC,wCAAwC,EACxC,gCAAgC,EAUjC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,iDAAiD,EACjD,kDAAkD,EAClD,0CAA0C,EAa3C,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACL,+BAA+B,EAKhC,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,sBAAsB,EACtB,gCAAgC,EAChC,wBAAwB,EAOzB,MAAM,4BAA4B,CAAC;AAqBpC,OAAO,EACL,4BAA4B,EAG7B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,mCAAmC,EAMpC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gCAAgC,EAChC,iCAAiC,EAOlC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,uBAAuB,EAIxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EAIvB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAchC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EAGlB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,wBAAwB,CAAC"}
@@ -31,6 +31,15 @@ export interface CalculateInverseLateralChromaticAberrationMappingInput {
31
31
  distortedImagePointMm: LensFieldPointMm;
32
32
  profile: LateralChromaticAberrationProfile;
33
33
  }
34
+ export interface CalculateInverseLateralChromaticAberrationMappingsInput {
35
+ /**
36
+ * Distorted output image-plane destinations. Each destination is inverse-
37
+ * mapped independently for red, green, and blue after one profile-resolution
38
+ * step for the batch.
39
+ */
40
+ distortedImagePointsMm: readonly LensFieldPointMm[];
41
+ profile: LateralChromaticAberrationProfile;
42
+ }
34
43
  export interface LateralChromaticAberrationChannelMapping {
35
44
  mappedImagePointMm: LensFieldPointMm;
36
45
  radialScale: number;
@@ -74,6 +83,12 @@ export interface InverseLateralChromaticAberrationMapping {
74
83
  };
75
84
  sourceSeparation: LateralChromaticAberrationSeparation;
76
85
  }
86
+ export interface InverseLateralChromaticAberrationMappings {
87
+ direction: "distorted-output-to-channel-sources-batch";
88
+ referenceChannel: "green";
89
+ mappings: readonly InverseLateralChromaticAberrationMapping[];
90
+ pointCount: number;
91
+ }
77
92
  /**
78
93
  * Calculates generic lateral chromatic-aberration field separation by mapping
79
94
  * one ideal image-plane point through a shared green-reference base distortion
@@ -90,4 +105,13 @@ export declare function calculateLateralChromaticAberrationMapping(input: Calcul
90
105
  * inverse sampling without inventing chromatic-aberration equations.
91
106
  */
92
107
  export declare function calculateInverseLateralChromaticAberrationMapping(input: CalculateInverseLateralChromaticAberrationMappingInput): CalculationResult<InverseLateralChromaticAberrationMapping>;
108
+ /**
109
+ * Inverse-maps multiple distorted destinations while resolving the shared CA
110
+ * profile once and validating each combined channel profile once for the
111
+ * complete batch.
112
+ *
113
+ * Per-point values match calculateInverseLateralChromaticAberrationMapping();
114
+ * provenance is shared once at the batch boundary.
115
+ */
116
+ export declare function calculateInverseLateralChromaticAberrationMappings(input: CalculateInverseLateralChromaticAberrationMappingsInput): CalculationResult<InverseLateralChromaticAberrationMappings>;
93
117
  //# sourceMappingURL=lateral-chromatic-aberration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lateral-chromatic-aberration.d.ts","sourceRoot":"","sources":["../../src/optics/lateral-chromatic-aberration.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EAElC,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,iCAAiC,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzE,MAAM,WAAW,iCAAiC;IAChD,uEAAuE;IACvE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,+DAA+D;IAC/D,uBAAuB,EAAE,MAAM,CAAC;IAChC;;;;;OAKG;IACH,0BAA0B,EAAE,4BAA4B,CAAC;IACzD,oEAAoE;IACpE,oBAAoB,EAAE,4BAA4B,CAAC;IACnD,qEAAqE;IACrE,qBAAqB,EAAE,4BAA4B,CAAC;CACrD;AAED,MAAM,WAAW,+CAA+C;IAC9D,kEAAkE;IAClE,YAAY,EAAE,gBAAgB,CAAC;IAC/B,OAAO,EAAE,iCAAiC,CAAC;CAC5C;AAED,MAAM,WAAW,sDAAsD;IACrE;;;OAGG;IACH,qBAAqB,EAAE,gBAAgB,CAAC;IACxC,OAAO,EAAE,iCAAiC,CAAC;CAC5C;AAED,MAAM,WAAW,wCAAwC;IACvD,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,4BAA4B,CAAC;CACpD;AAED,MAAM,WAAW,+CAA+C;IAC9D,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,4BAA4B,CAAC;CACpD;AAED,MAAM,WAAW,yBAAyB;IACxC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,EAAE,yBAAyB,CAAC;IACpC,SAAS,EAAE,yBAAyB,CAAC;IACrC,OAAO,EAAE,yBAAyB,CAAC;IACnC,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,iCAAiC;IAChD,SAAS,EAAE,kCAAkC,CAAC;IAC9C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,QAAQ,EAAE;QACR,GAAG,EAAE,wCAAwC,CAAC;QAC9C,KAAK,EAAE,wCAAwC,CAAC;QAChD,IAAI,EAAE,wCAAwC,CAAC;KAChD,CAAC;IACF,UAAU,EAAE,oCAAoC,CAAC;CAClD;AAED,MAAM,WAAW,wCAAwC;IACvD,SAAS,EAAE,qCAAqC,CAAC;IACjD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,EAAE,gBAAgB,CAAC;IACxC,QAAQ,EAAE;QACR,GAAG,EAAE,+CAA+C,CAAC;QACrD,KAAK,EAAE,+CAA+C,CAAC;QACvD,IAAI,EAAE,+CAA+C,CAAC;KACvD,CAAC;IACF,gBAAgB,EAAE,oCAAoC,CAAC;CACxD;AAyID;;;;;;GAMG;AACH,wBAAgB,0CAA0C,CACxD,KAAK,EAAE,+CAA+C,GACrD,iBAAiB,CAAC,iCAAiC,CAAC,CAsDtD;AAED;;;;;;GAMG;AACH,wBAAgB,iDAAiD,CAC/D,KAAK,EAAE,sDAAsD,GAC5D,iBAAiB,CAAC,wCAAwC,CAAC,CAsD7D"}
1
+ {"version":3,"file":"lateral-chromatic-aberration.d.ts","sourceRoot":"","sources":["../../src/optics/lateral-chromatic-aberration.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  import { approximationResult } from "../core/calculation-result.js";
3
3
  import { InvalidScientificInputError } from "../core/validation.js";
4
- import { calculateInverseRadialDistortionMapping, calculateRadialDistortionMapping } from "./radial-distortion.js";
4
+ import { calculateInverseRadialDistortionMapping, calculateInverseRadialSourcePointValue, calculateRadialDistortionMapping, validateRadialDistortionProfile } from "./radial-distortion.js";
5
5
  function requireFiniteCoefficients(path, coefficients) {
6
6
  for (const key of ["k1", "k2", "k3"]) {
7
7
  if (!Number.isFinite(coefficients[key])) {
@@ -171,4 +171,58 @@ export function calculateInverseLateralChromaticAberrationMapping(input) {
171
171
  sourceSeparation: separations(red.sourceImagePointMm, green.sourceImagePointMm, blue.sourceImagePointMm)
172
172
  }, "generic-inverse-green-reference-lateral-chromatic-aberration", "1.0.0", assumptions());
173
173
  }
174
+ /**
175
+ * Inverse-maps multiple distorted destinations while resolving the shared CA
176
+ * profile once and validating each combined channel profile once for the
177
+ * complete batch.
178
+ *
179
+ * Per-point values match calculateInverseLateralChromaticAberrationMapping();
180
+ * provenance is shared once at the batch boundary.
181
+ */
182
+ export function calculateInverseLateralChromaticAberrationMappings(input) {
183
+ const profiles = resolveProfiles(input.profile);
184
+ const validatedProfiles = {
185
+ red: withChannelContext("red", () => validateRadialDistortionProfile(profiles.red)),
186
+ green: withChannelContext("green", () => validateRadialDistortionProfile(profiles.green)),
187
+ blue: withChannelContext("blue", () => validateRadialDistortionProfile(profiles.blue))
188
+ };
189
+ const mappings = input.distortedImagePointsMm.map((point, index) => {
190
+ const red = withChannelContext("red", () => calculateInverseRadialSourcePointValue(point, validatedProfiles.red, `distortedImagePointsMm[${index}]`));
191
+ const green = withChannelContext("green", () => calculateInverseRadialSourcePointValue(point, validatedProfiles.green, `distortedImagePointsMm[${index}]`));
192
+ const blue = withChannelContext("blue", () => calculateInverseRadialSourcePointValue(point, validatedProfiles.blue, `distortedImagePointsMm[${index}]`));
193
+ return {
194
+ direction: "distorted-output-to-channel-sources",
195
+ referenceChannel: "green",
196
+ distortedImagePointMm: { ...point },
197
+ channels: {
198
+ red: {
199
+ sourceImagePointMm: { ...red.sourceImagePointMm },
200
+ radialScaleAtSource: red.radialScaleAtSource,
201
+ combinedCoefficients: { ...profiles.red.coefficients }
202
+ },
203
+ green: {
204
+ sourceImagePointMm: { ...green.sourceImagePointMm },
205
+ radialScaleAtSource: green.radialScaleAtSource,
206
+ combinedCoefficients: { ...profiles.green.coefficients }
207
+ },
208
+ blue: {
209
+ sourceImagePointMm: { ...blue.sourceImagePointMm },
210
+ radialScaleAtSource: blue.radialScaleAtSource,
211
+ combinedCoefficients: { ...profiles.blue.coefficients }
212
+ }
213
+ },
214
+ sourceSeparation: separations(red.sourceImagePointMm, green.sourceImagePointMm, blue.sourceImagePointMm)
215
+ };
216
+ });
217
+ return approximationResult({
218
+ direction: "distorted-output-to-channel-sources-batch",
219
+ referenceChannel: "green",
220
+ mappings,
221
+ pointCount: mappings.length
222
+ }, "generic-inverse-green-reference-lateral-chromatic-aberration-batch", "1.0.0", [
223
+ ...assumptions(),
224
+ "Combined red/green/blue radial profiles are resolved once for the batch",
225
+ "Each channel profile is validated once before batch point sampling"
226
+ ]);
227
+ }
174
228
  //# sourceMappingURL=lateral-chromatic-aberration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lateral-chromatic-aberration.js","sourceRoot":"","sources":["../../src/optics/lateral-chromatic-aberration.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EACL,mBAAmB,EAEpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EACL,uCAAuC,EACvC,gCAAgC,EAIjC,MAAM,wBAAwB,CAAC;AA4FhC,SAAS,yBAAyB,CAChC,IAAY,EACZ,YAA0C;IAE1C,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,IAAI,GAAG,kBAAkB,CACjC,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,IAAkC,EAClC,MAAoC;IAEpC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE;QACvB,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE;QACvB,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE;KACxB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,OAA0C;IAE1C,yBAAyB,CACvB,oCAAoC,EACpC,OAAO,CAAC,0BAA0B,CACnC,CAAC;IACF,yBAAyB,CACvB,8BAA8B,EAC9B,OAAO,CAAC,oBAAoB,CAC7B,CAAC;IACF,yBAAyB,CACvB,+BAA+B,EAC/B,OAAO,CAAC,qBAAqB,CAC9B,CAAC;IAEF,MAAM,MAAM,GAAG;QACb,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;KACzD,CAAC;IAEF,OAAO;QACL,GAAG,EAAE;YACH,GAAG,MAAM;YACT,YAAY,EAAE,eAAe,CAC3B,OAAO,CAAC,0BAA0B,EAClC,OAAO,CAAC,oBAAoB,CAC7B;SACF;QACD,KAAK,EAAE;YACL,GAAG,MAAM;YACT,YAAY,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,EAAE;SACxD;QACD,IAAI,EAAE;YACJ,GAAG,MAAM;YACT,YAAY,EAAE,eAAe,CAC3B,OAAO,CAAC,0BAA0B,EAClC,OAAO,CAAC,qBAAqB,CAC9B;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,OAA0C,EAC1C,SAAkB;IAElB,IAAI,CAAC;QACH,OAAO,SAAS,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,KAAK,YAAY,2BAA2B,EAAE,CAAC;YACjD,MAAM,IAAI,2BAA2B,CACnC,gCAAgC,OAAO,aAAa,KAAK,CAAC,OAAO,EAAE,CACpE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAuB,EACvB,MAAwB;IAExB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAC7B,OAAO;QACL,CAAC;QACD,CAAC;QACD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,GAAqB,EACrB,KAAuB,EACvB,IAAsB;IAEtB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE5C,OAAO;QACL,QAAQ;QACR,SAAS;QACT,OAAO;QACP,qBAAqB,EAAE,IAAI,CAAC,GAAG,CAC7B,QAAQ,CAAC,QAAQ,EACjB,SAAS,CAAC,QAAQ,EAClB,OAAO,CAAC,QAAQ,CACjB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;QACL,6IAA6I;QAC7I,8JAA8J;QAC9J,8FAA8F;QAC9F,kGAAkG;QAClG,uIAAuI;QACvI,6JAA6J;QAC7J,8HAA8H;KAC/H,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0CAA0C,CACxD,KAAsD;IAEtD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,CACzC,gCAAgC,CAAC;QAC/B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO,EAAE,QAAQ,CAAC,GAAG;KACtB,CAAC,CACH,CAAC,KAAK,CAAC;IACR,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,CAC7C,gCAAgC,CAAC;QAC/B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO,EAAE,QAAQ,CAAC,KAAK;KACxB,CAAC,CACH,CAAC,KAAK,CAAC;IACR,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,CAC3C,gCAAgC,CAAC;QAC/B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO,EAAE,QAAQ,CAAC,IAAI;KACvB,CAAC,CACH,CAAC,KAAK,CAAC;IAER,OAAO,mBAAmB,CACxB;QACE,SAAS,EAAE,kCAAkC;QAC7C,gBAAgB,EAAE,OAAO;QACzB,kBAAkB,EAAE,EAAE,GAAG,KAAK,CAAC,YAAY,EAAE;QAC7C,QAAQ,EAAE;YACR,GAAG,EAAE;gBACH,kBAAkB,EAAE,EAAE,GAAG,GAAG,CAAC,kBAAkB,EAAE;gBACjD,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,oBAAoB,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE;aACvD;YACD,KAAK,EAAE;gBACL,kBAAkB,EAAE,EAAE,GAAG,KAAK,CAAC,kBAAkB,EAAE;gBACnD,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,oBAAoB,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE;aACzD;YACD,IAAI,EAAE;gBACJ,kBAAkB,EAAE,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE;gBAClD,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,oBAAoB,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE;aACxD;SACF;QACD,UAAU,EAAE,WAAW,CACrB,GAAG,CAAC,kBAAkB,EACtB,KAAK,CAAC,kBAAkB,EACxB,IAAI,CAAC,kBAAkB,CACxB;KACF,EACD,sDAAsD,EACtD,OAAO,EACP,WAAW,EAAE,CACd,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iDAAiD,CAC/D,KAA6D;IAE7D,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,CACzC,uCAAuC,CAAC;QACtC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;QAClD,OAAO,EAAE,QAAQ,CAAC,GAAG;KACtB,CAAC,CACH,CAAC,KAAK,CAAC;IACR,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,CAC7C,uCAAuC,CAAC;QACtC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;QAClD,OAAO,EAAE,QAAQ,CAAC,KAAK;KACxB,CAAC,CACH,CAAC,KAAK,CAAC;IACR,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,CAC3C,uCAAuC,CAAC;QACtC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;QAClD,OAAO,EAAE,QAAQ,CAAC,IAAI;KACvB,CAAC,CACH,CAAC,KAAK,CAAC;IAER,OAAO,mBAAmB,CACxB;QACE,SAAS,EAAE,qCAAqC;QAChD,gBAAgB,EAAE,OAAO;QACzB,qBAAqB,EAAE,EAAE,GAAG,KAAK,CAAC,qBAAqB,EAAE;QACzD,QAAQ,EAAE;YACR,GAAG,EAAE;gBACH,kBAAkB,EAAE,EAAE,GAAG,GAAG,CAAC,kBAAkB,EAAE;gBACjD,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;gBAC5C,oBAAoB,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE;aACvD;YACD,KAAK,EAAE;gBACL,kBAAkB,EAAE,EAAE,GAAG,KAAK,CAAC,kBAAkB,EAAE;gBACnD,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;gBAC9C,oBAAoB,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE;aACzD;YACD,IAAI,EAAE;gBACJ,kBAAkB,EAAE,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE;gBAClD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;gBAC7C,oBAAoB,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE;aACxD;SACF;QACD,gBAAgB,EAAE,WAAW,CAC3B,GAAG,CAAC,kBAAkB,EACtB,KAAK,CAAC,kBAAkB,EACxB,IAAI,CAAC,kBAAkB,CACxB;KACF,EACD,8DAA8D,EAC9D,OAAO,EACP,WAAW,EAAE,CACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"lateral-chromatic-aberration.js","sourceRoot":"","sources":["../../src/optics/lateral-chromatic-aberration.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,11 @@ export interface CalculateInverseRadialDistortionMappingInput {
36
36
  distortedImagePointMm: LensFieldPointMm;
37
37
  profile: RadialDistortionProfile;
38
38
  }
39
+ export interface CalculateInverseRadialDistortionMappingsInput {
40
+ /** Distorted image-plane destinations to inverse-map in one validated batch. */
41
+ distortedImagePointsMm: readonly LensFieldPointMm[];
42
+ profile: RadialDistortionProfile;
43
+ }
39
44
  export interface RadialDistortionMapping {
40
45
  direction: "undistorted-to-distorted";
41
46
  sourceImagePointMm: LensFieldPointMm;
@@ -64,6 +69,22 @@ export interface InverseRadialDistortionMapping {
64
69
  };
65
70
  profileMinimumRadialDerivative: number;
66
71
  }
72
+ export interface InverseRadialDistortionMappings {
73
+ direction: "distorted-to-undistorted-batch";
74
+ mappings: readonly InverseRadialDistortionMapping[];
75
+ pointCount: number;
76
+ profileMinimumRadialDerivative: number;
77
+ }
78
+ /** @internal Shared by composite lens-field batch evaluators; not root-exported. */
79
+ export interface ValidatedRadialProfile {
80
+ normalizationRadiusMm: number;
81
+ maximumNormalizedRadius: number;
82
+ coefficients: RadialDistortionCoefficients;
83
+ minimumRadialDerivative: number;
84
+ maximumMappedNormalizedRadius: number;
85
+ }
86
+ /** @internal Validates/copies one profile for repeated in-package evaluation. */
87
+ export declare function validateRadialDistortionProfile(profile: RadialDistortionProfile): ValidatedRadialProfile;
67
88
  /**
68
89
  * Applies a generic radial lens-distortion field mapping to one ideal
69
90
  * image-plane point.
@@ -87,5 +108,24 @@ export declare function calculateRadialDistortionMapping(input: CalculateRadialD
87
108
  * the inverse unique over the declared operating radius. A deterministic fixed
88
109
  * bisection count is used rather than an unconstrained iterative solver.
89
110
  */
111
+ export interface InverseRadialSourcePointValue {
112
+ sourceImagePointMm: LensFieldPointMm;
113
+ distortedNormalizedRadius: number;
114
+ sourceNormalizedRadius: number;
115
+ radialScaleAtSource: number;
116
+ }
117
+ /**
118
+ * @internal Minimal inverse evaluation used by composite in-package batch
119
+ * models that do not need the standalone radial delta/provenance envelope.
120
+ */
121
+ export declare function calculateInverseRadialSourcePointValue(distortedImagePointMm: LensFieldPointMm, profile: ValidatedRadialProfile, pointPath: string): InverseRadialSourcePointValue;
90
122
  export declare function calculateInverseRadialDistortionMapping(input: CalculateInverseRadialDistortionMappingInput): CalculationResult<InverseRadialDistortionMapping>;
123
+ /**
124
+ * Inverse-maps multiple distorted image-plane destinations while validating
125
+ * and resolving the radial profile only once for the complete batch.
126
+ *
127
+ * The returned per-point mappings are numerically identical to the scalar API;
128
+ * provenance and profile validation are shared once at the batch boundary.
129
+ */
130
+ export declare function calculateInverseRadialDistortionMappings(input: CalculateInverseRadialDistortionMappingsInput): CalculationResult<InverseRadialDistortionMappings>;
91
131
  //# sourceMappingURL=radial-distortion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"radial-distortion.d.ts","sourceRoot":"","sources":["../../src/optics/radial-distortion.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAMvC,MAAM,WAAW,4BAA4B;IAC3C,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,uBAAuB,EAAE,MAAM,CAAC;IAChC,YAAY,EAAE,4BAA4B,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,CAAC,EAAE,MAAM,CAAC;IACV,oEAAoE;IACpE,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,qCAAqC;IACpD,2CAA2C;IAC3C,YAAY,EAAE,gBAAgB,CAAC;IAC/B,OAAO,EAAE,uBAAuB,CAAC;CAClC;AAED,MAAM,WAAW,4CAA4C;IAC3D,4EAA4E;IAC5E,qBAAqB,EAAE,gBAAgB,CAAC;IACxC,OAAO,EAAE,uBAAuB,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,0BAA0B,CAAC;IACtC,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE;QACP,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,8BAA8B,EAAE,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,0BAA0B,CAAC;IACtC,qBAAqB,EAAE,gBAAgB,CAAC;IACxC,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,yBAAyB,EAAE,MAAM,CAAC;IAClC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE;QACP,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,8BAA8B,EAAE,MAAM,CAAC;CACxC;AA2JD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,qCAAqC,GAC3C,iBAAiB,CAAC,uBAAuB,CAAC,CAiD5C;AAED;;;;;;;GAOG;AACH,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,4CAA4C,GAClD,iBAAiB,CAAC,8BAA8B,CAAC,CAiFnD"}
1
+ {"version":3,"file":"radial-distortion.d.ts","sourceRoot":"","sources":["../../src/optics/radial-distortion.ts"],"names":[],"mappings":"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"}
@@ -45,7 +45,8 @@ function derivativeCriticalSquaredRadii(coefficients) {
45
45
  const root = Math.sqrt(discriminant);
46
46
  return [(-b - root) / (2 * a), (-b + root) / (2 * a)];
47
47
  }
48
- function validateProfile(profile) {
48
+ /** @internal Validates/copies one profile for repeated in-package evaluation. */
49
+ export function validateRadialDistortionProfile(profile) {
49
50
  requirePositiveFinite("profile.normalizationRadiusMm", profile.normalizationRadiusMm);
50
51
  requirePositiveFinite("profile.maximumNormalizedRadius", profile.maximumNormalizedRadius);
51
52
  requireFinite("profile.coefficients.k1", profile.coefficients.k1);
@@ -104,7 +105,7 @@ function mappingAssumptions() {
104
105
  */
105
106
  export function calculateRadialDistortionMapping(input) {
106
107
  requirePoint("imagePointMm", input.imagePointMm);
107
- const profile = validateProfile(input.profile);
108
+ const profile = validateRadialDistortionProfile(input.profile);
108
109
  const sourceRadiusMm = Math.hypot(input.imagePointMm.x, input.imagePointMm.y);
109
110
  const sourceNormalizedRadius = sourceRadiusMm / profile.normalizationRadiusMm;
110
111
  if (sourceNormalizedRadius > profile.maximumNormalizedRadius) {
@@ -134,21 +135,16 @@ export function calculateRadialDistortionMapping(input) {
134
135
  }, "generic-radial-lens-distortion", "1.0.0", mappingAssumptions());
135
136
  }
136
137
  /**
137
- * Inverse-maps one distorted image-plane point to its ideal/undistorted source
138
- * coordinate for destination-to-source renderer sampling.
139
- *
140
- * The same profile monotonicity requirement used by the forward mapping makes
141
- * the inverse unique over the declared operating radius. A deterministic fixed
142
- * bisection count is used rather than an unconstrained iterative solver.
138
+ * @internal Minimal inverse evaluation used by composite in-package batch
139
+ * models that do not need the standalone radial delta/provenance envelope.
143
140
  */
144
- export function calculateInverseRadialDistortionMapping(input) {
145
- requirePoint("distortedImagePointMm", input.distortedImagePointMm);
146
- const profile = validateProfile(input.profile);
147
- const distortedRadiusMm = Math.hypot(input.distortedImagePointMm.x, input.distortedImagePointMm.y);
141
+ export function calculateInverseRadialSourcePointValue(distortedImagePointMm, profile, pointPath) {
142
+ requirePoint(pointPath, distortedImagePointMm);
143
+ const distortedRadiusMm = Math.hypot(distortedImagePointMm.x, distortedImagePointMm.y);
148
144
  const distortedNormalizedRadius = distortedRadiusMm / profile.normalizationRadiusMm;
149
145
  if (distortedNormalizedRadius >
150
146
  profile.maximumMappedNormalizedRadius) {
151
- throw new InvalidScientificInputError("distortedImagePointMm lies outside the mapped radial distortion profile operating radius.");
147
+ throw new InvalidScientificInputError(`${pointPath} lies outside the mapped radial distortion profile operating radius.`);
152
148
  }
153
149
  let sourceNormalizedRadius = 0;
154
150
  if (distortedNormalizedRadius > 0) {
@@ -166,33 +162,66 @@ export function calculateInverseRadialDistortionMapping(input) {
166
162
  }
167
163
  sourceNormalizedRadius = (lower + upper) / 2;
168
164
  }
169
- const scaleAtSource = radialScale(sourceNormalizedRadius, profile.coefficients);
165
+ const radialScaleAtSource = radialScale(sourceNormalizedRadius, profile.coefficients);
170
166
  const sourceImagePointMm = distortedNormalizedRadius === 0
171
167
  ? { x: 0, y: 0 }
172
168
  : {
173
- x: input.distortedImagePointMm.x / scaleAtSource,
174
- y: input.distortedImagePointMm.y / scaleAtSource
169
+ x: distortedImagePointMm.x / radialScaleAtSource,
170
+ y: distortedImagePointMm.y / radialScaleAtSource
175
171
  };
176
- const deltaX = sourceImagePointMm.x - input.distortedImagePointMm.x;
177
- const deltaY = sourceImagePointMm.y - input.distortedImagePointMm.y;
178
- return approximationResult({
179
- direction: "distorted-to-undistorted",
180
- distortedImagePointMm: {
181
- ...input.distortedImagePointMm
182
- },
172
+ return {
183
173
  sourceImagePointMm,
184
174
  distortedNormalizedRadius,
185
175
  sourceNormalizedRadius,
186
- radialScaleAtSource: scaleAtSource,
176
+ radialScaleAtSource
177
+ };
178
+ }
179
+ function calculateInverseRadialDistortionMappingValue(distortedImagePointMm, profile, pointPath) {
180
+ const source = calculateInverseRadialSourcePointValue(distortedImagePointMm, profile, pointPath);
181
+ const deltaX = source.sourceImagePointMm.x - distortedImagePointMm.x;
182
+ const deltaY = source.sourceImagePointMm.y - distortedImagePointMm.y;
183
+ return {
184
+ direction: "distorted-to-undistorted",
185
+ distortedImagePointMm: { ...distortedImagePointMm },
186
+ sourceImagePointMm: source.sourceImagePointMm,
187
+ distortedNormalizedRadius: source.distortedNormalizedRadius,
188
+ sourceNormalizedRadius: source.sourceNormalizedRadius,
189
+ radialScaleAtSource: source.radialScaleAtSource,
187
190
  deltaMm: {
188
191
  x: deltaX,
189
192
  y: deltaY,
190
193
  distance: Math.hypot(deltaX, deltaY)
191
194
  },
192
195
  profileMinimumRadialDerivative: profile.minimumRadialDerivative
193
- }, "generic-inverse-radial-lens-distortion", "1.0.0", [
196
+ };
197
+ }
198
+ export function calculateInverseRadialDistortionMapping(input) {
199
+ const profile = validateRadialDistortionProfile(input.profile);
200
+ const mapping = calculateInverseRadialDistortionMappingValue(input.distortedImagePointMm, profile, "distortedImagePointMm");
201
+ return approximationResult(mapping, "generic-inverse-radial-lens-distortion", "1.0.0", [
194
202
  ...mappingAssumptions(),
195
203
  `Inverse radius is solved with ${INVERSE_BISECTION_ITERATIONS} deterministic bisection iterations`
196
204
  ]);
197
205
  }
206
+ /**
207
+ * Inverse-maps multiple distorted image-plane destinations while validating
208
+ * and resolving the radial profile only once for the complete batch.
209
+ *
210
+ * The returned per-point mappings are numerically identical to the scalar API;
211
+ * provenance and profile validation are shared once at the batch boundary.
212
+ */
213
+ export function calculateInverseRadialDistortionMappings(input) {
214
+ const profile = validateRadialDistortionProfile(input.profile);
215
+ const mappings = input.distortedImagePointsMm.map((point, index) => calculateInverseRadialDistortionMappingValue(point, profile, `distortedImagePointsMm[${index}]`));
216
+ return approximationResult({
217
+ direction: "distorted-to-undistorted-batch",
218
+ mappings,
219
+ pointCount: mappings.length,
220
+ profileMinimumRadialDerivative: profile.minimumRadialDerivative
221
+ }, "generic-inverse-radial-lens-distortion-batch", "1.0.0", [
222
+ ...mappingAssumptions(),
223
+ `Inverse radius is solved with ${INVERSE_BISECTION_ITERATIONS} deterministic bisection iterations per point`,
224
+ "The radial profile is validated and its invariant extrema are resolved once for the batch"
225
+ ]);
226
+ }
198
227
  //# sourceMappingURL=radial-distortion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"radial-distortion.js","sourceRoot":"","sources":["../../src/optics/radial-distortion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radial-distortion.js","sourceRoot":"","sources":["../../src/optics/radial-distortion.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,39 @@ export interface PhysicalBoundsFromOpticalAxisMm {
27
27
  top: number;
28
28
  bottom: number;
29
29
  }
30
+ export interface NormalizedRasterUv {
31
+ /** 0 at the left edge, 1 at the right edge. */
32
+ u: number;
33
+ /** 0 at the top edge, 1 at the bottom edge. */
34
+ v: number;
35
+ }
36
+ /**
37
+ * Pre-orientation optical image-plane coordinate in millimetres.
38
+ *
39
+ * Origin is the optical axis; +X points right and +Y points up.
40
+ */
41
+ export interface ImagePlaneMetricPointMm {
42
+ x: number;
43
+ y: number;
44
+ }
45
+ export interface MapOrientedPhysicalUvToImagePlaneInput {
46
+ uv: NormalizedRasterUv;
47
+ /**
48
+ * Physical region represented by the normalized raster, after physical
49
+ * camera orientation, using the capture contract's +Y-down physical basis.
50
+ */
51
+ orientedPhysicalBoundsFromOpticalAxisMm: PhysicalBoundsFromOpticalAxisMm;
52
+ orientation: CaptureOrientation;
53
+ }
54
+ export interface MapImagePlanePointToOrientedPhysicalUvInput {
55
+ imagePlanePointMm: ImagePlaneMetricPointMm;
56
+ /**
57
+ * Physical region represented by the normalized raster, after physical
58
+ * camera orientation, using the capture contract's +Y-down physical basis.
59
+ */
60
+ orientedPhysicalBoundsFromOpticalAxisMm: PhysicalBoundsFromOpticalAxisMm;
61
+ orientation: CaptureOrientation;
62
+ }
30
63
  export interface ResolveCaptureGeometryInput {
31
64
  imagingArea: SensorImagingArea;
32
65
  nativeRaster: NativeImageRaster;
@@ -200,6 +233,26 @@ export declare function transformOrientedRasterPointToNative(input: TransformRas
200
233
  export declare function transformNativeRasterVectorToOriented(input: TransformRasterVectorInput): RasterVector;
201
234
  /** Rotates an oriented raster vector back into native coordinates. */
202
235
  export declare function transformOrientedRasterVectorToNative(input: TransformRasterVectorInput): RasterVector;
236
+ /**
237
+ * Maps normalized coordinates in an oriented physical raster region into the
238
+ * pre-orientation optical image plane used by lens-field and camera-mapping
239
+ * APIs.
240
+ *
241
+ * The supplied physical bounds use the capture contract's +Y-down basis after
242
+ * physical camera orientation. The returned image-plane point uses optical-axis
243
+ * origin, +X right and +Y up. No lens or projection equation is applied.
244
+ */
245
+ export declare function mapOrientedPhysicalUvToImagePlanePoint(input: MapOrientedPhysicalUvToImagePlaneInput): ImagePlaneMetricPointMm;
246
+ /**
247
+ * Maps a pre-orientation optical image-plane point into normalized coordinates
248
+ * of an oriented physical raster region.
249
+ *
250
+ * This is the exact coordinate inverse of
251
+ * mapOrientedPhysicalUvToImagePlanePoint(). Points outside the supplied region
252
+ * fail closed; a tiny tolerance only absorbs floating-point round-trip noise at
253
+ * an edge.
254
+ */
255
+ export declare function mapImagePlanePointToOrientedPhysicalUv(input: MapImagePlanePointToOrientedPhysicalUvInput): NormalizedRasterUv;
203
256
  /** Transforms an integer half-open native raster rectangle into oriented coordinates. */
204
257
  export declare function transformNativeRasterRectToOriented(input: TransformRasterRectInput): RasterRect;
205
258
  /** Transforms an oriented integer half-open rectangle back to native coordinates. */
@@ -1 +1 @@
1
- {"version":3,"file":"capture-geometry.d.ts","sourceRoot":"","sources":["../../src/output/capture-geometry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture-geometry.d.ts","sourceRoot":"","sources":["../../src/output/capture-geometry.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,38 @@ function validateRasterVector(name, vector) {
50
50
  throw new InvalidScientificInputError(`${name} coordinates must be finite.`);
51
51
  }
52
52
  }
53
+ const NORMALIZED_UV_EDGE_TOLERANCE = 1e-12;
54
+ function validatePhysicalBounds(name, bounds) {
55
+ for (const key of ["left", "right", "top", "bottom"]) {
56
+ if (!Number.isFinite(bounds[key])) {
57
+ throw new InvalidScientificInputError(`${name}.${key} must be finite.`);
58
+ }
59
+ }
60
+ if (bounds.right <= bounds.left) {
61
+ throw new InvalidScientificInputError(`${name} must have right greater than left.`);
62
+ }
63
+ if (bounds.bottom <= bounds.top) {
64
+ throw new InvalidScientificInputError(`${name} must have bottom greater than top.`);
65
+ }
66
+ }
67
+ function validateNormalizedUv(name, uv) {
68
+ if (!Number.isFinite(uv.u) || !Number.isFinite(uv.v)) {
69
+ throw new InvalidScientificInputError(`${name} coordinates must be finite.`);
70
+ }
71
+ if (uv.u < 0 || uv.u > 1 || uv.v < 0 || uv.v > 1) {
72
+ throw new InvalidScientificInputError(`${name} coordinates must lie within [0, 1].`);
73
+ }
74
+ }
75
+ function normalizeUvEdge(name, value) {
76
+ if (!Number.isFinite(value)) {
77
+ throw new InvalidScientificInputError(`${name} must be finite.`);
78
+ }
79
+ if (value < -NORMALIZED_UV_EDGE_TOLERANCE ||
80
+ value > 1 + NORMALIZED_UV_EDGE_TOLERANCE) {
81
+ throw new InvalidScientificInputError(`${name} must lie within the supplied oriented physical bounds.`);
82
+ }
83
+ return Math.max(0, Math.min(1, value));
84
+ }
53
85
  function fullRect(raster) {
54
86
  return {
55
87
  x: 0,
@@ -144,6 +176,58 @@ export function transformOrientedRasterVectorToNative(input) {
144
176
  validateRasterVector("vector", input.vector);
145
177
  return inverseRotateVector(input.vector, input.orientation);
146
178
  }
179
+ /**
180
+ * Maps normalized coordinates in an oriented physical raster region into the
181
+ * pre-orientation optical image plane used by lens-field and camera-mapping
182
+ * APIs.
183
+ *
184
+ * The supplied physical bounds use the capture contract's +Y-down basis after
185
+ * physical camera orientation. The returned image-plane point uses optical-axis
186
+ * origin, +X right and +Y up. No lens or projection equation is applied.
187
+ */
188
+ export function mapOrientedPhysicalUvToImagePlanePoint(input) {
189
+ requireCaptureOrientation(input.orientation);
190
+ validateNormalizedUv("uv", input.uv);
191
+ validatePhysicalBounds("orientedPhysicalBoundsFromOpticalAxisMm", input.orientedPhysicalBoundsFromOpticalAxisMm);
192
+ const bounds = input.orientedPhysicalBoundsFromOpticalAxisMm;
193
+ const orientedPhysicalPoint = {
194
+ x: bounds.left + input.uv.u * (bounds.right - bounds.left),
195
+ y: bounds.top + input.uv.v * (bounds.bottom - bounds.top)
196
+ };
197
+ const nativePhysicalPoint = inverseRotateVector(orientedPhysicalPoint, input.orientation);
198
+ return {
199
+ x: nativePhysicalPoint.x,
200
+ y: -nativePhysicalPoint.y
201
+ };
202
+ }
203
+ /**
204
+ * Maps a pre-orientation optical image-plane point into normalized coordinates
205
+ * of an oriented physical raster region.
206
+ *
207
+ * This is the exact coordinate inverse of
208
+ * mapOrientedPhysicalUvToImagePlanePoint(). Points outside the supplied region
209
+ * fail closed; a tiny tolerance only absorbs floating-point round-trip noise at
210
+ * an edge.
211
+ */
212
+ export function mapImagePlanePointToOrientedPhysicalUv(input) {
213
+ requireCaptureOrientation(input.orientation);
214
+ validateRasterVector("imagePlanePointMm", input.imagePlanePointMm);
215
+ validatePhysicalBounds("orientedPhysicalBoundsFromOpticalAxisMm", input.orientedPhysicalBoundsFromOpticalAxisMm);
216
+ const bounds = input.orientedPhysicalBoundsFromOpticalAxisMm;
217
+ const nativePhysicalPoint = {
218
+ x: input.imagePlanePointMm.x,
219
+ y: -input.imagePlanePointMm.y
220
+ };
221
+ const orientedPhysicalPoint = rotateVector(nativePhysicalPoint, input.orientation);
222
+ const u = (orientedPhysicalPoint.x - bounds.left) /
223
+ (bounds.right - bounds.left);
224
+ const v = (orientedPhysicalPoint.y - bounds.top) /
225
+ (bounds.bottom - bounds.top);
226
+ return {
227
+ u: normalizeUvEdge("imagePlanePointMm.u", u),
228
+ v: normalizeUvEdge("imagePlanePointMm.v", v)
229
+ };
230
+ }
147
231
  /** Transforms an integer half-open native raster rectangle into oriented coordinates. */
148
232
  export function transformNativeRasterRectToOriented(input) {
149
233
  requireCaptureOrientation(input.orientation);
@@ -1 +1 @@
1
- {"version":3,"file":"capture-geometry.js","sourceRoot":"","sources":["../../src/output/capture-geometry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture-geometry.js","sourceRoot":"","sources":["../../src/output/capture-geometry.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EACL,0BAA0B,EAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,gBAAgB,EAGjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIN,MAAM,8BAA8B,CAAC;AAQtC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAqB;IACvD,WAAW;IACX,oBAAoB;IACpB,oBAAoB;IACpB,4BAA4B;CAC7B,CAAC,CAAC;AAgPH,SAAS,yBAAyB,CAChC,KAAc;IAEd,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAA2B,CAAC,EACtD,CAAC;QACD,MAAM,IAAI,2BAA2B,CAAC,yBAAyB,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAAY,EACZ,MAAwB;IAExB,sBAAsB,CAAC,GAAG,IAAI,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAChE,sBAAsB,CAAC,GAAG,IAAI,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY,EAAE,KAAa;IAC5D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,uCAAuC,CAC/C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAY,EACZ,IAAgB,EAChB,MAAwB;IAExB,yBAAyB,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/C,yBAAyB,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/C,sBAAsB,CAAC,GAAG,IAAI,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,sBAAsB,CAAC,GAAG,IAAI,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAEtD,IACE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU;QACvC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EACzC,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,8CAA8C,CACtD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAY,EACZ,KAAkB,EAClB,MAAwB;IAExB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,8BAA8B,CACtC,CAAC;IACJ,CAAC;IACD,IACE,KAAK,CAAC,CAAC,GAAG,CAAC;QACX,KAAK,CAAC,CAAC,GAAG,CAAC;QACX,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU;QAC3B,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,EAC5B,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,qDAAqD,CAC7D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,MAAoB;IAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,8BAA8B,CACtC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAE3C,SAAS,sBAAsB,CAC7B,IAAY,EACZ,MAAuC;IAEvC,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAU,EAAE,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,IAAI,GAAG,kBAAkB,CACjC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,qCAAqC,CAC7C,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,qCAAqC,CAC7C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,EAAsB;IAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,8BAA8B,CACtC,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,sCAAsC,CAC9C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,KAAa;IAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,2BAA2B,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;IACnE,CAAC;IACD,IACE,KAAK,GAAG,CAAC,4BAA4B;QACrC,KAAK,GAAG,CAAC,GAAG,4BAA4B,EACxC,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,yDAAyD,CACjE,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,QAAQ,CAAC,MAAwB;IACxC,OAAO;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,MAAM,CAAC,UAAU;QACxB,MAAM,EAAE,MAAM,CAAC,WAAW;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,MAAwB,EACxB,WAA+B;IAE/B,OAAO,WAAW,KAAK,oBAAoB;QACzC,WAAW,KAAK,4BAA4B;QAC5C,CAAC,CAAC;YACE,UAAU,EAAE,MAAM,CAAC,WAAW;YAC9B,WAAW,EAAE,MAAM,CAAC,UAAU;SAC/B;QACH,CAAC,CAAC;YACE,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC;AACR,CAAC;AAED,SAAS,YAAY,CACnB,MAAoB,EACpB,WAA+B;IAE/B,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,WAAW;YACd,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QACtC,KAAK,oBAAoB;YACvB,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QACvC,KAAK,oBAAoB;YACvB,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACxC,KAAK,4BAA4B;YAC/B,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAAoB,EACpB,WAA+B;IAE/B,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,WAAW;YACd,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QACtC,KAAK,oBAAoB;YACvB,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACvC,KAAK,oBAAoB;YACvB,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACxC,KAAK,4BAA4B;YAC/B,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oCAAoC,CAClD,KAAgC;IAEhC,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,uBAAuB,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5D,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAE9D,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC;IACtE,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC;QAC1B,KAAK,WAAW;YACd,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5B,KAAK,oBAAoB;YACvB,OAAO,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACzD,KAAK,oBAAoB;YACvB,OAAO,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACjE,KAAK,4BAA4B;YAC/B,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,oCAAoC,CAClD,KAAgC;IAEhC,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,uBAAuB,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3E,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAE1D,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC;IACtE,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC;QAC1B,KAAK,WAAW;YACd,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5B,KAAK,oBAAoB;YACvB,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACzD,KAAK,oBAAoB;YACvB,OAAO,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACjE,KAAK,4BAA4B;YAC/B,OAAO,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,qCAAqC,CACnD,KAAiC;IAEjC,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;AACvD,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,qCAAqC,CACnD,KAAiC;IAEjC,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sCAAsC,CACpD,KAA6C;IAE7C,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACrC,sBAAsB,CACpB,yCAAyC,EACzC,KAAK,CAAC,uCAAuC,CAC9C,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,CAAC,uCAAuC,CAAC;IAC7D,MAAM,qBAAqB,GAAG;QAC5B,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1D,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;KAC1D,CAAC;IACF,MAAM,mBAAmB,GAAG,mBAAmB,CAC7C,qBAAqB,EACrB,KAAK,CAAC,WAAW,CAClB,CAAC;IAEF,OAAO;QACL,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACxB,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC;KAC1B,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sCAAsC,CACpD,KAAkD;IAElD,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,oBAAoB,CAAC,mBAAmB,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACnE,sBAAsB,CACpB,yCAAyC,EACzC,KAAK,CAAC,uCAAuC,CAC9C,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,CAAC,uCAAuC,CAAC;IAC7D,MAAM,mBAAmB,GAAG;QAC1B,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC5B,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;KAC9B,CAAC;IACF,MAAM,qBAAqB,GAAG,YAAY,CACxC,mBAAmB,EACnB,KAAK,CAAC,WAAW,CAClB,CAAC;IACF,MAAM,CAAC,GACL,CAAC,qBAAqB,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QACvC,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,CAAC,GACL,CAAC,qBAAqB,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;QACtC,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAE/B,OAAO;QACL,CAAC,EAAE,eAAe,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC5C,CAAC,EAAE,eAAe,CAAC,qBAAqB,EAAE,CAAC,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,mCAAmC,CACjD,KAA+B;IAE/B,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,uBAAuB,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5D,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAE3D,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC;IACtE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IAClE,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC;QAC1B,KAAK,WAAW;YACd,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3B,KAAK,oBAAoB;YACvB,OAAO;gBACL,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;gBAC5B,CAAC,EAAE,CAAC;gBACJ,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,SAAS;aAClB,CAAC;QACJ,KAAK,oBAAoB;YACvB,OAAO;gBACL,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;gBAC1B,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;gBAC5B,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,UAAU;aACnB,CAAC;QACJ,KAAK,4BAA4B;YAC/B,OAAO;gBACL,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;gBAC1B,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,SAAS;aAClB,CAAC;IACN,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,mCAAmC,CACjD,KAA+B;IAE/B,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,uBAAuB,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3E,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAEvD,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC;IACtE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IAClE,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC;QAC1B,KAAK,WAAW;YACd,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3B,KAAK,oBAAoB;YACvB,OAAO;gBACL,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;gBAC3B,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,SAAS;aAClB,CAAC;QACJ,KAAK,oBAAoB;YACvB,OAAO;gBACL,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;gBAC1B,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;gBAC5B,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,UAAU;aACnB,CAAC;QACJ,KAAK,4BAA4B;YAC/B,OAAO;gBACL,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;gBAC3B,CAAC,EAAE,CAAC;gBACJ,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,SAAS;aAClB,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CACnC,WAA8B,EAC9B,YAA+B,EAC/B,IAAgB;IAEhB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC;IAC7D,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC;IAE/D,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG,WAAW,CAAC,OAAO,GAAG,CAAC;QAC/C,KAAK,EACH,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,WAAW,CAAC,OAAO,GAAG,CAAC;QAC1D,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG,WAAW,CAAC,QAAQ,GAAG,CAAC;QAC/C,MAAM,EACJ,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,WAAW,CAAC,QAAQ,GAAG,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAAuC,EACvC,WAA+B;IAE/B,MAAM,OAAO,GAAG;QACd,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE;QACjC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE;QAClC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QACrC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;KACrC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAErD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpD,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrD,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,kCAAkC,CACzC,YAA6C,EAC7C,YAA8B,EAC9B,IAAgB;IAEhB,MAAM,MAAM,GACV,CAAC,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC;IACrE,MAAM,MAAM,GACV,CAAC,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC;IAEtE,OAAO;QACL,IAAI,EAAE,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM;QACzC,KAAK,EAAE,YAAY,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM;QACzD,GAAG,EAAE,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM;QACvC,MAAM,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM;KAC3D,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,QAAoB,EACpB,YAA8B;IAE9B,wEAAwE;IACxE,0EAA0E;IAC1E,sEAAsE;IACtE,qDAAqD;IACrD,MAAM,iBAAiB,GACrB,CAAC,YAAY,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,iBAAiB,GACrB,CAAC,YAAY,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,kBAAkB,GACtB,CAAC,YAAY,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IACrD,MAAM,kBAAkB,GACtB,CAAC,YAAY,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IAErD,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CACjC,iBAAiB,EACjB,kBAAkB,CACnB,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CACjC,iBAAiB,EACjB,kBAAkB,CACnB,CAAC;IAEF,IAAI,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;QAC5C,MAAM,IAAI,2BAA2B,CACnC,gJAAgJ,CACjJ,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CACpC,KAAmB,EACnB,MAAoB,EACpB,oBAA4B;IAE5B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,KAAK,CAAC,CAAC,EACP,KAAK,CAAC,CAAC,EACP,oBAAoB,CACrB,CAAC;IACF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,MAAM,CAAC,CAAC,EACR,MAAM,CAAC,CAAC,EACR,oBAAoB,CACrB,CAAC;IACF,MAAM,GAAG,GACP,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QAClB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QAClB,oBAAoB,GAAG,oBAAoB,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CACrB,CAAC,CAAC,EACF,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC,CAChD,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,0BAA0B,CACjC,MAAuC,EACvC,aAAqB,EACrB,cAAkC;IAgBlC,MAAM,QAAQ,GAAG;QACf,aAAa;QACb,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;KAC5D,CAAC;IACF,MAAM,UAAU,GAAG,0BAA0B,CAAC;QAC5C,GAAG,QAAQ;QACX,yBAAyB,EAAE,MAAM,CAAC,IAAI;QACtC,yBAAyB,EAAE,MAAM,CAAC,KAAK;KACxC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,0BAA0B,CAAC;QAC1C,GAAG,QAAQ;QACX,yBAAyB,EAAE,MAAM,CAAC,GAAG;QACrC,yBAAyB,EAAE,MAAM,CAAC,MAAM;KACzC,CAAC,CAAC;IACH,MAAM,oBAAoB,GAAG,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACnE,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IAClD,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IACpD,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC1D,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACxD,MAAM,oBAAoB,GAAG,6BAA6B,CACxD,OAAO,EACP,WAAW,EACX,oBAAoB,CACrB,CAAC;IACF,MAAM,oBAAoB,GAAG,6BAA6B,CACxD,QAAQ,EACR,UAAU,EACV,oBAAoB,CACrB,CAAC;IAEF,OAAO;QACL,iBAAiB,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO;QAC3C,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO;QACvC,eAAe,EAAE,IAAI,CAAC,GAAG,CACvB,oBAAoB,EACpB,oBAAoB,CACrB;QACD,uBAAuB,EAAE;YACvB,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,cAAc;YACxC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,cAAc;SACzC;QACD,qBAAqB,EAAE;YACrB,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc;YACtC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc;SACvC;QACD,2BAA2B,EAAE;YAC3B,oBAAoB;YACpB,oBAAoB;SACrB;QACD,UAAU,EAAE;YACV,oBAAoB;YACpB,UAAU,EAAE,UAAU,CAAC,UAAU;SAClC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAkC;IAElC,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,qBAAqB,CAAC,qBAAqB,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACxE,qBAAqB,CAAC,sBAAsB,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1E,uBAAuB,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAE5D,MAAM,iBAAiB,GACrB,KAAK,CAAC,iBAAiB,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC1D,kBAAkB,CAChB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,CAAC,YAAY,CACnB,CAAC;IAEF,MAAM,YAAY,GAAG,4BAA4B,CAC/C,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,iBAAiB,CAClB,CAAC;IACF,MAAM,iBAAiB,GAAsB;QAC3C,OAAO,EAAE,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI;QAC/C,QAAQ,EAAE,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG;KACjD,CAAC;IACF,MAAM,YAAY,GAAqB;QACrC,UAAU,EAAE,iBAAiB,CAAC,KAAK;QACnC,WAAW,EAAE,iBAAiB,CAAC,MAAM;KACtC,CAAC;IACF,MAAM,cAAc,GAAG,oBAAoB,CACzC,YAAY,EACZ,KAAK,CAAC,WAAW,CAClB,CAAC;IACF,MAAM,cAAc,GAAG,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACrE,MAAM,mBAAmB,GAAsB;QAC7C,OAAO,EAAE,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI;QACnD,QAAQ,EAAE,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,GAAG;KACrD,CAAC;IAEF,MAAM,cAAc,GAClB,KAAK,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC;IACnD,kBAAkB,CAChB,gBAAgB,EAChB,cAAc,EACd,cAAc,CACf,CAAC;IAEF,MAAM,YAAY,GAAqB,KAAK,CAAC,YAAY,IAAI;QAC3D,UAAU,EAAE,cAAc,CAAC,KAAK;QAChC,WAAW,EAAE,cAAc,CAAC,MAAM;KACnC,CAAC;IACF,uBAAuB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IACtD,yBAAyB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAExD,MAAM,YAAY,GAAG,kCAAkC,CACrD,cAAc,EACd,cAAc,EACd,cAAc,CACf,CAAC;IACF,MAAM,iBAAiB,GAAsB;QAC3C,OAAO,EAAE,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI;QAC/C,QAAQ,EAAE,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG;KACjD,CAAC;IACF,MAAM,YAAY,GAAG,YAAY,CAAC,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC;IACpE,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;IACtE,MAAM,iCAAiC,GACrC,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC;QACrC,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAEtC,OAAO,gBAAgB,CACrB;QACE,MAAM,EAAE;YACN,WAAW,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE;YACrC,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,YAAY,EAAE;SAClC;QACD,aAAa,EAAE;YACb,UAAU,EAAE,EAAE,GAAG,iBAAiB,EAAE;YACpC,WAAW,EAAE,iBAAiB;YAC9B,gBAAgB,EAAE;gBAChB,CAAC,EAAE,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC;gBACpD,CAAC,EAAE,YAAY,CAAC,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC;aACrD;YACD,6BAA6B,EAAE;gBAC7B,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC/C,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC;aAChD;YACD,+BAA+B,EAAE,YAAY;YAC7C,qBAAqB,EAAE,uBAAuB;YAC9C,MAAM,EAAE,YAAY;SACrB;QACD,eAAe,EAAE;YACf,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,WAAW,EAAE,mBAAmB;YAChC,+BAA+B,EAAE,cAAc;YAC/C,MAAM,EAAE,cAAc;SACvB;QACD,MAAM,EAAE;YACN,QAAQ,EAAE,EAAE,GAAG,cAAc,EAAE;YAC/B,MAAM,EAAE,EAAE,GAAG,YAAY,EAAE;YAC3B,WAAW,EAAE,iBAAiB;YAC9B,+BAA+B,EAAE,YAAY;YAC7C,6BAA6B,EAAE;gBAC7B,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC/C,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC;aAChD;YACD,0BAA0B,EACxB,CAAC,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC;gBAC9C,CAAC,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC;YAC1D,4BAA4B,EAAE;gBAC5B,CAAC,EAAE,YAAY;gBACf,CAAC,EAAE,YAAY;gBACf,sBAAsB,EAAE,iCAAiC;aAC1D;SACF;KACF,EACD,2BAA2B,EAC3B,OAAO,EACP;QACE,mFAAmF;QACnF,kDAAkD;QAClD,8FAA8F;QAC9F,iIAAiI;QACjI,4GAA4G;QAC5G,gIAAgI;QAChI,oHAAoH;KACrH,CACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAC/C,KAA6C;IAE7C,qBAAqB,CAAC,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAG,sBAAsB,CAAC;QACtC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;YACvC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC;KACpD,CAAC,CAAC,KAAK,CAAC;IAET,MAAM,MAAM,GACV,QAAQ,CAAC,eAAe,CAAC,+BAA+B,CAAC;IAC3D,MAAM,WAAW,GAAG,0BAA0B,CAC5C,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,CACrB,CAAC;IAEF,OAAO,gBAAgB,CACrB;QACE,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,GAAG,WAAW;QACd,iBAAiB,EAAE;YACjB,GAAG,QAAQ,CAAC,eAAe,CAAC,WAAW;SACxC;QACD,6BAA6B,EAAE,YAAY,CACzC,QAAQ,CAAC,aAAa,CAAC,6BAA6B,EACpD,KAAK,CAAC,WAAW,CAClB;KACF,EACD,uCAAuC,EACvC,OAAO,EACP;QACE,kGAAkG;QAClG,mGAAmG;QACnG,yGAAyG;QACzG,uHAAuH;QACvH,gEAAgE;KACjE,CACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAsC;IAEtC,qBAAqB,CAAC,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAG,sBAAsB,CAAC;QACtC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;YACvC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC;QACnD,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS;YACpC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;KAC9C,CAAC,CAAC,KAAK,CAAC;IACT,MAAM,WAAW,GAAG,0BAA0B,CAC5C,QAAQ,CAAC,MAAM,CAAC,+BAA+B,EAC/C,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,CACrB,CAAC;IAEF,OAAO,gBAAgB,CACrB;QACE,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,GAAG,WAAW;QACd,iBAAiB,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;QACrD,6BAA6B,EAAE;YAC7B,GAAG,QAAQ,CAAC,MAAM,CAAC,6BAA6B;SACjD;KACF,EACD,+BAA+B,EAC/B,OAAO,EACP;QACE,iHAAiH;QACjH,yDAAyD;QACzD,6DAA6D;QAC7D,gHAAgH;KACjH,CACF,CAAC;AACJ,CAAC"}
package/docs/API_STYLE.md CHANGED
@@ -49,6 +49,7 @@ Coordinate systems and image-formation stages are part of the API contract, not
49
49
  - Physical camera rotation does not redefine native sensor coordinates; transform points, vectors, and rectangles explicitly.
50
50
  - Physical active capture and later digital/output crop are distinct concepts and should have distinct fields/types.
51
51
  - Off-center physical capture must preserve position relative to the optical axis rather than being silently recentered.
52
+ - Crossing between an oriented physical raster region (+Y down) and the pre-orientation optical image plane (+Y up) must use the exported coordinate bridge rather than ad-hoc axis swaps or sign changes.
52
53
  - Output resizing/cropping must not imply geometric stretching without an explicit transform or pixel-aspect contract.
53
54
  - Conventional 35 mm-equivalent focal length is derived from active physical capture geometry; it must not replace physical focal length or silently include later digital crop.
54
55
 
@@ -48,6 +48,15 @@ The contract explicitly distinguishes:
48
48
 
49
49
  Native sensor/raster coordinates remain invariant under physical camera orientation.
50
50
 
51
+ Use `mapOrientedPhysicalUvToImagePlanePoint()` and
52
+ `mapImagePlanePointToOrientedPhysicalUv()` when a renderer or integration
53
+ boundary must cross between a normalized oriented physical raster region and
54
+ the pre-orientation `image-plane-metric` space. These transforms explicitly
55
+ undo/apply physical orientation and convert the capture contract's physical
56
+ +Y-down basis to/from the optical image plane's +Y-up basis. They do not apply
57
+ projection, distortion, crop, or lens equations, and asymmetric physical bounds
58
+ remain asymmetric.
59
+
51
60
  ## Partial ordering and coupling
52
61
 
53
62
  `requiredUpstreamStages` defines hard scientific dependencies.
package/docs/USAGE.md CHANGED
@@ -156,6 +156,39 @@ The physical focal length remains authoritative. The effective projection distan
156
156
 
157
157
  This generic model is returned as an `approximation`. A future calibrated lens profile would need defensible provenance, reuse rights, and uncertainty/limitation metadata.
158
158
 
159
+ ## Oriented raster to image-plane coordinates
160
+
161
+ Use the coordinate bridge before calling image-plane lens or camera-mapping APIs
162
+ from an oriented/output renderer. The capture/output physical region uses the
163
+ raster-style +Y-down basis, while lens-field APIs use the pre-orientation
164
+ optical image plane with +Y up.
165
+
166
+ ```ts
167
+ import {
168
+ mapImagePlanePointToOrientedPhysicalUv,
169
+ mapOrientedPhysicalUvToImagePlanePoint
170
+ } from "@photivra/engine";
171
+
172
+ const bounds = { left: -12, right: 12, top: -18, bottom: 18 };
173
+
174
+ const destination = mapOrientedPhysicalUvToImagePlanePoint({
175
+ uv: { u: 0.25, v: 0.75 },
176
+ orientedPhysicalBoundsFromOpticalAxisMm: bounds,
177
+ orientation: "portrait-clockwise"
178
+ });
179
+
180
+ const roundTrip = mapImagePlanePointToOrientedPhysicalUv({
181
+ imagePlanePointMm: destination,
182
+ orientedPhysicalBoundsFromOpticalAxisMm: bounds,
183
+ orientation: "portrait-clockwise"
184
+ });
185
+ ```
186
+
187
+ These functions only transform coordinate bases. They do not apply projection,
188
+ distortion, focus breathing, crop, or resampling. Asymmetric/off-axis physical
189
+ bounds are preserved rather than recentered, and reverse mapping fails closed
190
+ when the image-plane point lies outside the supplied physical region.
191
+
159
192
  ## Radial lens-distortion mapping
160
193
 
161
194
  Use `calculateRadialDistortionMapping()` for a generic rotationally symmetric ideal-to-distorted image-plane mapping and `calculateInverseRadialDistortionMapping()` for the destination-to-source mapping a renderer needs for inverse sampling.
@@ -267,6 +300,30 @@ The channel labels are representative renderer RGB channels. They are not wavele
267
300
 
268
301
  A renderer should inverse-map each destination channel to the source coordinate returned by the engine instead of adding a backend-specific RGB offset or finished-image fringe blur.
269
302
 
303
+ For renderer grids or other multi-point evaluation, use the batch inverse APIs so
304
+ one profile validation/provenance boundary serves the full point set:
305
+
306
+ ```ts
307
+ import {
308
+ calculateInverseLateralChromaticAberrationMappings,
309
+ calculateInverseRadialDistortionMappings
310
+ } from "@photivra/engine";
311
+
312
+ const radialGrid = calculateInverseRadialDistortionMappings({
313
+ distortedImagePointsMm: points,
314
+ profile: radialProfile
315
+ });
316
+
317
+ const caGrid = calculateInverseLateralChromaticAberrationMappings({
318
+ distortedImagePointsMm: points,
319
+ profile: caProfile
320
+ });
321
+ ```
322
+
323
+ Batch per-point values are defined to match the corresponding scalar inverse
324
+ APIs. Batching changes repeated validation/allocation structure, not the lens
325
+ model, operating envelope, coordinate basis, or numerical solver.
326
+
270
327
  ## Illumination vignetting
271
328
 
272
329
  Use `calculateIlluminationVignetting()` when a generic virtual lens needs field-dependent **relative linear throughput** without changing geometry or pupil/PSF shape.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@photivra/engine",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "private": false,
5
5
  "description": "Scientific TypeScript engine for camera optics, exposure, focus, motion, sensor sampling, diffraction, and digital imaging calculations.",
6
6
  "type": "module",
@@ -63,7 +63,8 @@
63
63
  "check:browser-surface": "node scripts/check-browser-surface.mjs",
64
64
  "check:licenses": "node scripts/check-license-policy.mjs",
65
65
  "check:license-headers": "node scripts/check-license-headers.mjs",
66
- "check:identity": "node scripts/check-project-identity.mjs"
66
+ "check:identity": "node scripts/check-project-identity.mjs",
67
+ "bench:image-formation": "npm run build && node --expose-gc scripts/benchmark-image-formation.mjs"
67
68
  },
68
69
  "devDependencies": {
69
70
  "@eslint/js": "10.0.1",