Wood grain follows a wavy fiber path along the board. At position x the local grain angle is the slope of that path:
y(x) = A · sin(2πx/T + φ)
θ_g(x) = atan( dy/dx ) = atan( A·(2π/T)·cos(2πx/T + φ) )
Tear-out risk grows with the mismatch between blade skew and local fiber direction, Δθ = θ_blade − θ_g:
Risk(Δθ) = Risk_max · sin²(Δθ) · (depth / depth_ref)
- Adaptive mode — a vision sensor reads the grain angle a lookahead distance ahead of the blade. The blade cannot use that reading instantly: it applies the value only after the head has physically travelled that same distance, a transport-delay
τ = lookahead / feed_rate exactly like a real sensor-to-actuator control loop. Push lookahead too far at high feed rate and the trace visibly lags the true grain curve.
- Fixed mode — the blade holds one manually-set skew regardless of grain; risk spikes whenever the wavy grain crosses that angle.
- The angle panel plots the analytic grain curve θ_g(x) against the blade angle actually used at each point the head has cut, across the whole board — the gap between the two curves *is* the tear-out risk.
- The strip chart is a live time history of risk and surface quality (100 − risk, exponentially smoothed).
- Drag the board view to pan manually; "Center view" snaps the camera back to the cutting head.
Real robotic planers and CNC jointers use exactly this sense-ahead / servo-behind loop — a camera or laser profilometer reads grain direction just ahead of the cutter, and the spindle head yaws in real time to track it, which is how automated wood-processing lines hold consistent surface quality across natural, non-uniform material.