| Line 390... |
Line 390... |
| 390 |
return null;
|
390 |
return null;
|
| 391 |
}
|
391 |
}
|
| 392 |
}
|
392 |
}
|
| 393 |
|
393 |
|
| 394 |
/**
|
394 |
/**
|
| 395 |
* Calibration nudge, in slider px, sized from the gap rather than fixed.
|
395 |
* How close the ring must get to the hole before we release, in px.
|
| 396 |
*
|
396 |
*
|
| 397 |
* A fixed 15px was far too small: it closed only ~25px, so the ratio came from a
|
397 |
* There is deliberately NO assumed ratio anywhere in this class. px-per-px is derived
|
| 398 |
* measurement ~20% noise and the aim landed ~30px out. A fixed 60px then proved too
|
398 |
* from real movement on every attempt and re-derived on every step within it -- see
|
| 399 |
* large in the other direction -- production data showed 85% of attempts with a gap
|
399 |
* aim(). Earlier revisions carried an ASSUMED_RATIO constant, it was tuned twice
|
| 400 |
* under 60px ended up UNUSABLE (the piece shot past the hole and the measured gap
|
400 |
* (1.7 -> 0.67 -> 1.7) against contaminated measurements, and it never helped. Do not
|
| 401 |
* grew), and 45% overall.
|
- |
|
| 402 |
*
|
- |
|
| 403 |
* Aim to close about half the gap: the piece travels roughly ASSUMED_RATIO px per
|
401 |
* reintroduce one: the widget's px-per-px genuinely varies by environment (1.4-1.5 in
|
| 404 |
* slider px, so nudge ~= gap / (2 * ratio), clamped. The real ratio is still derived
|
402 |
* production, 1.1-1.2 locally) and by brand, which is exactly why it must be measured.
|
| 405 |
* from the measurement; this only sizes the probe.
|
- |
|
| 406 |
*/
|
403 |
*/
|
| 407 |
private static final double ALIGNED_PX = 2.0;
|
404 |
private static final double ALIGNED_PX = 2.0;
|
| 408 |
|
405 |
|
| 409 |
/**
|
406 |
/**
|
| 410 |
* margin-left for logging only. Reading it off a detached element throws, and this is
|
407 |
* margin-left for logging only. Reading it off a detached element throws, and this is
|