feat: grade a sparse window's polyline by slope, so phosphor does not switch off on zoom
Intensity grading was gated on the column reduction, which is gated on a density whose only job is killing the moire beat. Dwell has nothing to do with that, so narrowing a window past the threshold turned the whole phosphor model off and a discontinuity went from a third of a flat top's ink to all of it in one pixel of zoom. stage_trace_slopes() grades each segment by its own slope instead, with a measure that agrees with the dense path at the boundary, and reports itself as FrameStats::slope_traces -- disjoint from column_traces, so a host asserting graded_traces == column_traces reads the same as before. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
cc908efa36
commit
37e414bcc5
8 files changed
+442
-13
No files matched your search
@@ -3,6 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cmath>
|
||||
#include <chrono>
|
||||
#include <algorithm>
|
||||
@@ -57,7 +58,9 @@ inline void check_near(double a, double b, const char* file, int line, const cha
|
||||
|
||||
inline int run_all() {
|
||||
int failed = 0;
|
||||
const char* only = std::getenv("PLOT_TEST_FILTER");
|
||||
for (auto& c : cases()) {
|
||||
if (only != nullptr && std::string(c.name).find(only) == std::string::npos) continue;
|
||||
try {
|
||||
c.fn();
|
||||
std::printf("[ ok ] %s\n", c.name);
|
||||
|
||||
Reference in new issue
Block a user