flutter3d_lab library

Virtual laboratory simulations — edu-04's own worked example (PendulumSimulation) is the first, not the only one this package is named for.

Not flutter3d_sim. A lab experiment is domain content built on top of flutter3d_sim's stepping and recording primitives (DigestTrace, DataSourceTrace, Demo), the same relationship a genre package (flutter3d_game_shooter and its siblings) already has with the engine underneath it — one more phenomenon to simulate is not one more thing flutter3d_sim itself needs to know how to do. Plain Dart, same reason flutter3d_sim is: a server replays a lab run through it, in a container with no Flutter SDK in it.

Classes

LabDivergence
The step a student's own recorded parameter first differs from the assignment's — doc/lesson-scenarios-plan.md's own wording for ls-e-01's acceptance: "преподаватель видит на шкале rp-02, на каком шаге студент выставил длину, отличную от задания".
PendulumDivergence
PendulumLabRun.divergenceFrom's own answer: where two runs parted, and what each one's own length knob read there.
PendulumLabRun
Runs PendulumSimulation for a fixed number of steps, recording exactly what edu-04 asks a virtual lab to record — a DigestTrace for verification (rp-01's own mechanism) and a DataSourceTrace of the one parameter a student's panel changes (edu-05's own mechanism, reused rather than reinvented: a lab's length knob and a factory's temperature sensor are both "a value with no controller behind it").
PendulumSimulation
edu-04's own worked example: a gravity pendulum, simple enough that a student changing one number — the length of the string — visibly changes how the run unfolds, and small enough that this file owes nothing to flutter3d_physics's general rigid-body machinery for it.

Constants

labFixedDt → const double

Functions

firstLabDivergence(DataSourceTrace assignment, DataSourceTrace student, {required String path, double tolerance = 1e-9}) → LabDivergence?
Compares assignment against student step by step on path and answers the first step they disagree, or null when the student never touched the parameter the assignment set.