Align preview blur metric with plot

This commit is contained in:
2025-10-05 13:33:32 +02:00
parent 43d028a41f
commit 39afb5c9e0
2 changed files with 18 additions and 8 deletions
+11 -4
View File
@@ -83,13 +83,20 @@ export const calculateBlurCircle = ({ focalLengthMm, aperture, subjectDistanceM,
const safeAperture = coercePositiveNumber(aperture, 1);
const f = focalLengthMm;
const u = metersToMillimeters(coercePositiveNumber(subjectDistanceM, 0.5));
const s = metersToMillimeters(coercePositiveNumber(sceneDistanceM, 0.51));
if (Math.abs(s - u) < 1e-6) {
if (Math.abs(u - f) < 1e-6) {
return 0;
}
if (Math.abs(u - f) < 1e-6) {
if (!Number.isFinite(sceneDistanceM)) {
const denominator = safeAperture * (u - f);
return Math.abs((f ** 2) / denominator);
}
const sceneMeters = Math.max(sceneDistanceM, 0.2);
const s = metersToMillimeters(sceneMeters);
if (Math.abs(s - u) < 1e-6) {
return 0;
}
@@ -197,7 +204,7 @@ export const buildStatsAtCheckpoints = ({
sceneDistanceM: Infinity,
});
} else {
sceneDistance = safeSubjectDistance + separation;
sceneDistance = Math.max(safeSubjectDistance + separation, 0.2);
blurMm = calculateBlurCircle({
focalLengthMm: lens.focalLength,
aperture,