EETargetFinder: marks per-triangle FOV coverage and scores candidate camera poses. Coverage is trajectory-driven — the scorer is inert in POSE (the adopted default).
EETargetFinder
At each pose, every triangle struck within the working depth band is counted:
htri←htri+1h_{\text{tri}} \leftarrow h_{\text{tri}} + 1 htri←htri+1
hhh is the shared ground truth for both coverage and novelty — one counter, two uses.
Let S\mathcal{S}S be the set of triangles seen at least once. Area coverage is:
coverage=∑i∈SAi∑jAj\text{coverage} = \frac{\displaystyle\sum_{i \in \mathcal{S}} A_i}{\displaystyle\sum_j A_j} coverage=j∑Aji∈S∑Ai
AiA_iAi = triangle area. Independent of candidate sampling — driven by orbit traversal.
Per-triangle novelty from the hit count hhh:
σn=11+h\sigma_n = \frac{1}{1 + h} σn=1+h1
Fresh triangle (h=0h=0h=0): σn=1\sigma_n = 1σn=1. Repeatedly seen (h→∞h \to \inftyh→∞): σn→0\sigma_n \to 0σn→0.
Candidate (target, pose) pairs are ranked by:
Ω=∏iσiwi\Omega = \prod_i \sigma_i^{w_i} Ω=i∏σiwi
σi∈[0,1]\sigma_i \in [0,1]σi∈[0,1]: view quality, novelty σn\sigma_nσn, area, stability, motion, anchor, manipulability. Weights wiw_iwi active only in EXPONENTIAL mode — inert in POSE.
Three geometry terms folded into σview\sigma_{\text{view}}σview:
q1=dist ramp(d,Dmin,Dmax)q2=cosθincq3=1−dpixdpix,maxq_1 = \text{dist ramp}(d, D_{\min}, D_{\max}) \qquad q_2 = \cos\theta_{\text{inc}} \qquad q_3 = 1 - \frac{d_{\text{pix}}}{d_{\text{pix,max}}} q1=dist ramp(d,Dmin,Dmax)q2=cosθincq3=1−dpix,maxdpix
σview=wdq1+wθq2+wξq3WKong\sigma_{\text{view}} = \frac{w_d q_1 + w_\theta q_2 + w_\xi q_3}{W_{\text{Kong}}} σview=WKongwdq1+wθq2+wξq3
In POSE mode the scorer never runs — yet:
coverage→full helix1.0\text{coverage} \xrightarrow{\text{full helix}} 1.0 coveragefull helix1.0
The lever is the orbit path (pole-to-pole helix), not scoring weights or reselect cadence. Achieved: coverage =0.9990= 0.9990=0.9990 at the adopted operating point.