@photivra/engine 0.1.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/CITATION.cff +23 -0
- package/LICENSE +201 -0
- package/NOTICE +9 -0
- package/README.md +235 -0
- package/dist/camera/field-of-view.d.ts +37 -0
- package/dist/camera/field-of-view.d.ts.map +1 -0
- package/dist/camera/field-of-view.js +47 -0
- package/dist/camera/field-of-view.js.map +1 -0
- package/dist/camera/projected-object-size.d.ts +34 -0
- package/dist/camera/projected-object-size.d.ts.map +1 -0
- package/dist/camera/projected-object-size.js +57 -0
- package/dist/camera/projected-object-size.js.map +1 -0
- package/dist/core/calculation-result.d.ts +125 -0
- package/dist/core/calculation-result.d.ts.map +1 -0
- package/dist/core/calculation-result.js +175 -0
- package/dist/core/calculation-result.js.map +1 -0
- package/dist/core/validation.d.ts +30 -0
- package/dist/core/validation.d.ts.map +1 -0
- package/dist/core/validation.js +45 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/exposure/exposure.d.ts +50 -0
- package/dist/exposure/exposure.d.ts.map +1 -0
- package/dist/exposure/exposure.js +62 -0
- package/dist/exposure/exposure.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/motion/projected-motion.d.ts +41 -0
- package/dist/motion/projected-motion.d.ts.map +1 -0
- package/dist/motion/projected-motion.js +84 -0
- package/dist/motion/projected-motion.js.map +1 -0
- package/dist/optics/aperture.d.ts +39 -0
- package/dist/optics/aperture.d.ts.map +1 -0
- package/dist/optics/aperture.js +62 -0
- package/dist/optics/aperture.js.map +1 -0
- package/dist/optics/circle-of-confusion.d.ts +23 -0
- package/dist/optics/circle-of-confusion.d.ts.map +1 -0
- package/dist/optics/circle-of-confusion.js +32 -0
- package/dist/optics/circle-of-confusion.js.map +1 -0
- package/dist/optics/depth-of-field.d.ts +53 -0
- package/dist/optics/depth-of-field.d.ts.map +1 -0
- package/dist/optics/depth-of-field.js +81 -0
- package/dist/optics/depth-of-field.js.map +1 -0
- package/dist/optics/diffraction.d.ts +26 -0
- package/dist/optics/diffraction.d.ts.map +1 -0
- package/dist/optics/diffraction.js +21 -0
- package/dist/optics/diffraction.js.map +1 -0
- package/dist/optics/thin-lens.d.ts +30 -0
- package/dist/optics/thin-lens.d.ts.map +1 -0
- package/dist/optics/thin-lens.js +33 -0
- package/dist/optics/thin-lens.js.map +1 -0
- package/dist/output/crop.d.ts +27 -0
- package/dist/output/crop.d.ts.map +1 -0
- package/dist/output/crop.js +26 -0
- package/dist/output/crop.js.map +1 -0
- package/dist/output/subject-framing-crop.d.ts +36 -0
- package/dist/output/subject-framing-crop.d.ts.map +1 -0
- package/dist/output/subject-framing-crop.js +42 -0
- package/dist/output/subject-framing-crop.js.map +1 -0
- package/dist/schema/camera.d.ts +34 -0
- package/dist/schema/camera.d.ts.map +1 -0
- package/dist/schema/camera.js +3 -0
- package/dist/schema/camera.js.map +1 -0
- package/dist/schema/scene.d.ts +69 -0
- package/dist/schema/scene.d.ts.map +1 -0
- package/dist/schema/scene.js +3 -0
- package/dist/schema/scene.js.map +1 -0
- package/dist/schema/validation.d.ts +25 -0
- package/dist/schema/validation.d.ts.map +1 -0
- package/dist/schema/validation.js +180 -0
- package/dist/schema/validation.js.map +1 -0
- package/dist/sensor/pixel-pitch.d.ts +21 -0
- package/dist/sensor/pixel-pitch.d.ts.map +1 -0
- package/dist/sensor/pixel-pitch.js +19 -0
- package/dist/sensor/pixel-pitch.js.map +1 -0
- package/dist/sensor/signal-noise.d.ts +37 -0
- package/dist/sensor/signal-noise.d.ts.map +1 -0
- package/dist/sensor/signal-noise.js +53 -0
- package/dist/sensor/signal-noise.js.map +1 -0
- package/dist/simulation/poc-simulation.d.ts +264 -0
- package/dist/simulation/poc-simulation.d.ts.map +1 -0
- package/dist/simulation/poc-simulation.js +449 -0
- package/dist/simulation/poc-simulation.js.map +1 -0
- package/dist/stabilization/camera-shake.d.ts +41 -0
- package/dist/stabilization/camera-shake.d.ts.map +1 -0
- package/dist/stabilization/camera-shake.js +79 -0
- package/dist/stabilization/camera-shake.js.map +1 -0
- package/docs/API_STYLE.md +65 -0
- package/docs/ARCHITECTURE.md +51 -0
- package/docs/MOTION_AND_SIGNAL.md +53 -0
- package/docs/PHYSICS_FOUNDATION.md +92 -0
- package/docs/POC_API.md +210 -0
- package/docs/PROVENANCE.md +87 -0
- package/docs/STABILIZATION.md +78 -0
- package/docs/USAGE.md +538 -0
- package/package.json +91 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import type { CalculationProvenance } from "../core/calculation-result.js";
|
|
2
|
+
import type { Vector3 } from "../schema/scene.js";
|
|
3
|
+
export interface PocSimulationRequest {
|
|
4
|
+
sensor: {
|
|
5
|
+
widthMm: number;
|
|
6
|
+
heightMm: number;
|
|
7
|
+
pixelWidth: number;
|
|
8
|
+
pixelHeight: number;
|
|
9
|
+
};
|
|
10
|
+
lens: {
|
|
11
|
+
focalLengthMm: number;
|
|
12
|
+
aperture: number;
|
|
13
|
+
};
|
|
14
|
+
exposure: {
|
|
15
|
+
shutterSeconds: number;
|
|
16
|
+
iso: number;
|
|
17
|
+
};
|
|
18
|
+
focus: {
|
|
19
|
+
focusDistanceM: number;
|
|
20
|
+
circleOfConfusionMm?: number;
|
|
21
|
+
equivalentViewingCircleOfConfusion?: {
|
|
22
|
+
referenceSensorWidthMm: number;
|
|
23
|
+
referenceSensorHeightMm: number;
|
|
24
|
+
referenceCircleOfConfusionMm: number;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
crop: {
|
|
28
|
+
factor: number;
|
|
29
|
+
};
|
|
30
|
+
diffraction: {
|
|
31
|
+
wavelengthNm: number;
|
|
32
|
+
};
|
|
33
|
+
motion: {
|
|
34
|
+
positionM: Vector3;
|
|
35
|
+
velocityMps: Vector3;
|
|
36
|
+
};
|
|
37
|
+
subject?: {
|
|
38
|
+
widthM: number;
|
|
39
|
+
heightM: number;
|
|
40
|
+
distanceM: number;
|
|
41
|
+
};
|
|
42
|
+
defocusSamples?: readonly {
|
|
43
|
+
id: string;
|
|
44
|
+
distanceM: number;
|
|
45
|
+
}[];
|
|
46
|
+
samplingSamples?: readonly {
|
|
47
|
+
id: string;
|
|
48
|
+
widthM: number;
|
|
49
|
+
heightM: number;
|
|
50
|
+
distanceM: number;
|
|
51
|
+
}[];
|
|
52
|
+
motionSamples?: readonly {
|
|
53
|
+
id: string;
|
|
54
|
+
positionM: Vector3;
|
|
55
|
+
velocityMps: Vector3;
|
|
56
|
+
}[];
|
|
57
|
+
subjectCrop?: {
|
|
58
|
+
targetSubjectHeightFraction: number;
|
|
59
|
+
};
|
|
60
|
+
cameraShake?: {
|
|
61
|
+
angularVelocityRadPerSec: {
|
|
62
|
+
yaw: number;
|
|
63
|
+
pitch: number;
|
|
64
|
+
};
|
|
65
|
+
stabilizationStopsEquivalent: number;
|
|
66
|
+
};
|
|
67
|
+
apertureShape?: {
|
|
68
|
+
bladeCount: number;
|
|
69
|
+
firstBladeEdgeAngleDegrees?: number;
|
|
70
|
+
};
|
|
71
|
+
diagnostics?: {
|
|
72
|
+
subjectMotionSampleId?: string;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
interface FieldOfViewSummary {
|
|
76
|
+
horizontalDegrees: number;
|
|
77
|
+
verticalDegrees: number;
|
|
78
|
+
diagonalDegrees: number;
|
|
79
|
+
}
|
|
80
|
+
export interface PocSimulationResponse {
|
|
81
|
+
apiVersion: "0.17.0";
|
|
82
|
+
projection: {
|
|
83
|
+
kind: "focus-aware-thin-lens";
|
|
84
|
+
focusDistanceM: number;
|
|
85
|
+
imageDistanceMm: number;
|
|
86
|
+
infinityProjectionScale: number;
|
|
87
|
+
provenance: CalculationProvenance;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Full-sensor optical field of view before any digital crop.
|
|
91
|
+
*/
|
|
92
|
+
fieldOfView: {
|
|
93
|
+
horizontalDegrees: number;
|
|
94
|
+
verticalDegrees: number;
|
|
95
|
+
diagonalDegrees: number;
|
|
96
|
+
};
|
|
97
|
+
sensor: {
|
|
98
|
+
pixelPitchMicrometers: number;
|
|
99
|
+
};
|
|
100
|
+
crop: {
|
|
101
|
+
cropFactor: number;
|
|
102
|
+
pixelWidth: number;
|
|
103
|
+
pixelHeight: number;
|
|
104
|
+
megapixels: number;
|
|
105
|
+
retainedAreaFraction: number;
|
|
106
|
+
effectiveFieldOfView: FieldOfViewSummary;
|
|
107
|
+
};
|
|
108
|
+
focusCriterion: {
|
|
109
|
+
source: "explicit";
|
|
110
|
+
circleOfConfusionMm: number;
|
|
111
|
+
} | {
|
|
112
|
+
source: "equivalent-viewing-approximation";
|
|
113
|
+
circleOfConfusionMm: number;
|
|
114
|
+
scaleFactor: number;
|
|
115
|
+
provenance: {
|
|
116
|
+
kind: "approximation";
|
|
117
|
+
model: string;
|
|
118
|
+
modelVersion: string;
|
|
119
|
+
assumptions?: readonly string[];
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
depthOfField: {
|
|
123
|
+
hyperfocalDistanceM: number;
|
|
124
|
+
nearLimitM: number;
|
|
125
|
+
farLimitM: number | null;
|
|
126
|
+
totalDepthOfFieldM: number | null;
|
|
127
|
+
};
|
|
128
|
+
diffraction: {
|
|
129
|
+
firstZeroDiameterMicrometers: number;
|
|
130
|
+
airyDiameterPixels: number;
|
|
131
|
+
pupilModel: "ideal-circular";
|
|
132
|
+
provenance: CalculationProvenance;
|
|
133
|
+
};
|
|
134
|
+
motion: {
|
|
135
|
+
distanceMm: number;
|
|
136
|
+
distancePixels: number;
|
|
137
|
+
deltaXMm: number;
|
|
138
|
+
deltaYMm: number;
|
|
139
|
+
deltaXPixels: number;
|
|
140
|
+
deltaYPixels: number;
|
|
141
|
+
};
|
|
142
|
+
exposure: {
|
|
143
|
+
ev100: number;
|
|
144
|
+
iso: number;
|
|
145
|
+
};
|
|
146
|
+
subjectSampling?: {
|
|
147
|
+
widthMm: number;
|
|
148
|
+
heightMm: number;
|
|
149
|
+
widthPixels: number;
|
|
150
|
+
heightPixels: number;
|
|
151
|
+
};
|
|
152
|
+
defocusSamples?: readonly {
|
|
153
|
+
id: string;
|
|
154
|
+
distanceM: number;
|
|
155
|
+
diameterMm: number;
|
|
156
|
+
diameterPixels: number;
|
|
157
|
+
}[];
|
|
158
|
+
samplingSamples?: readonly {
|
|
159
|
+
id: string;
|
|
160
|
+
widthMm: number;
|
|
161
|
+
heightMm: number;
|
|
162
|
+
widthPixels: number;
|
|
163
|
+
heightPixels: number;
|
|
164
|
+
}[];
|
|
165
|
+
motionSamples?: readonly {
|
|
166
|
+
id: string;
|
|
167
|
+
distanceMm: number;
|
|
168
|
+
distancePixels: number;
|
|
169
|
+
deltaXMm: number;
|
|
170
|
+
deltaYMm: number;
|
|
171
|
+
deltaXPixels: number;
|
|
172
|
+
deltaYPixels: number;
|
|
173
|
+
}[];
|
|
174
|
+
subjectCrop?: {
|
|
175
|
+
/** Additional crop relative to the already-applied request crop. */
|
|
176
|
+
additionalCropFactor: number;
|
|
177
|
+
/** Total linear crop relative to the full sensor. */
|
|
178
|
+
totalCropFactor: number;
|
|
179
|
+
pixelWidth: number;
|
|
180
|
+
pixelHeight: number;
|
|
181
|
+
megapixels: number;
|
|
182
|
+
subjectHeightFraction: number;
|
|
183
|
+
subjectClipped: boolean;
|
|
184
|
+
additionalCropApplied: boolean;
|
|
185
|
+
effectiveFieldOfView: FieldOfViewSummary;
|
|
186
|
+
};
|
|
187
|
+
apertureShape?: {
|
|
188
|
+
bladeCount: number;
|
|
189
|
+
sunstarRayCount: number;
|
|
190
|
+
sunstarRayAnglesDegrees: readonly number[];
|
|
191
|
+
normalizedVertices: readonly {
|
|
192
|
+
x: number;
|
|
193
|
+
y: number;
|
|
194
|
+
}[];
|
|
195
|
+
provenance: CalculationProvenance;
|
|
196
|
+
};
|
|
197
|
+
primarySubjectDiagnostics?: {
|
|
198
|
+
subjectDistanceM: number;
|
|
199
|
+
samplingHeightPixels: number;
|
|
200
|
+
defocusDiameterPixels: number;
|
|
201
|
+
diffractionFirstZeroDiameterPixels: number;
|
|
202
|
+
diffractionModel: string;
|
|
203
|
+
subjectMotion?: {
|
|
204
|
+
id: string;
|
|
205
|
+
distancePixels: number;
|
|
206
|
+
};
|
|
207
|
+
cameraShake?: {
|
|
208
|
+
stabilizedDistancePixels: number;
|
|
209
|
+
provenanceKind: "approximation";
|
|
210
|
+
};
|
|
211
|
+
comparisonCaution: string;
|
|
212
|
+
};
|
|
213
|
+
cameraShake?: {
|
|
214
|
+
residualMotionFactor: number;
|
|
215
|
+
unstabilized: {
|
|
216
|
+
deltaXmm: number;
|
|
217
|
+
deltaYmm: number;
|
|
218
|
+
distanceMm: number;
|
|
219
|
+
distancePixels: number;
|
|
220
|
+
deltaXPixels: number;
|
|
221
|
+
deltaYPixels: number;
|
|
222
|
+
};
|
|
223
|
+
stabilized: {
|
|
224
|
+
deltaXmm: number;
|
|
225
|
+
deltaYmm: number;
|
|
226
|
+
distanceMm: number;
|
|
227
|
+
distancePixels: number;
|
|
228
|
+
deltaXPixels: number;
|
|
229
|
+
deltaYPixels: number;
|
|
230
|
+
};
|
|
231
|
+
provenance: {
|
|
232
|
+
kind: "approximation";
|
|
233
|
+
model: string;
|
|
234
|
+
modelVersion: string;
|
|
235
|
+
assumptions?: readonly string[];
|
|
236
|
+
};
|
|
237
|
+
};
|
|
238
|
+
provenance: {
|
|
239
|
+
kind: "calculated" | "mixed";
|
|
240
|
+
components: {
|
|
241
|
+
projection: "calculated";
|
|
242
|
+
fieldOfView: "calculated";
|
|
243
|
+
crop: "calculated";
|
|
244
|
+
focusCriterion: "calculated" | "approximation";
|
|
245
|
+
depthOfField: "calculated";
|
|
246
|
+
diffraction: "calculated";
|
|
247
|
+
motion: "calculated";
|
|
248
|
+
exposure: "calculated";
|
|
249
|
+
apertureShape?: "calculated";
|
|
250
|
+
cameraShake?: "approximation";
|
|
251
|
+
};
|
|
252
|
+
note: string;
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Composes the validated POC calculations into a single renderer/agent-facing
|
|
257
|
+
* response without introducing any new photographic model.
|
|
258
|
+
*
|
|
259
|
+
* @param request Complete POC simulation request with explicit physical units.
|
|
260
|
+
* @returns Serializable POC metrics for one camera/scene configuration.
|
|
261
|
+
*/
|
|
262
|
+
export declare function simulatePocCamera(request: PocSimulationRequest): PocSimulationResponse;
|
|
263
|
+
export {};
|
|
264
|
+
//# sourceMappingURL=poc-simulation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poc-simulation.d.ts","sourceRoot":"","sources":["../../src/simulation/poc-simulation.ts"],"names":[],"mappings":"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"}
|