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 …
}