4.3. XL Usage — PROSPECT-D Interpolation

import de.grogra.rtmodelslibrary.*;

// --- Two-point interpolation ---
// t=0 → YOUNG_LEAF, t=1 → SENESCENT
double[][] lrt = ProspectD.compute(
    ProspectDPreset.YOUNG_LEAF, ProspectDPreset.SENESCENT,
    0.6, InterpolationMode.SMOOTHSTEP);

// --- Three-point parabolic interpolation ---
// Passes EXACTLY through MATURE_LEAF at t=0.5
double[][] lrt = ProspectD.compute(
    ProspectDPreset.YOUNG_LEAF,   // t=0
    ProspectDPreset.MATURE_LEAF,  // t=0.5 (exact)
    ProspectDPreset.SENESCENT,    // t=1
    0.6, InterpolationMode.SMOOTHSTEP);

// --- Get the interpolated preset for inspection ---
ProspectDPreset p = ProspectDPreset.interpolate(
    ProspectDPreset.YOUNG_LEAF, ProspectDPreset.SENESCENT,
    0.6, InterpolationMode.SMOOTHSTEP);
System.out.println("Cab at t=0.6: " + p.Cab);

// --- Animate a leaf through an XL loop ---
for (double t = 0.0; t <= 1.0; t += 0.1) {
    double[][] lrt = ProspectD.compute(
        ProspectDPreset.YOUNG_LEAF, ProspectDPreset.MATURE_LEAF,
        ProspectDPreset.SENESCENT, t, InterpolationMode.SMOOTHSTEP);
    // … assign lrt to leaf material …
}