Skip to content

MLP207: Transform with a confirmed-large begin cost

qual reports MLP207 when a played Transform-family animation (Transform, ReplacementTransform, TransformMatching*) has a confirmed large begin cost: at Animation.begin the source is copied, point/curve topology is aligned with the target (curves are inserted into the smaller side), and every family member pair is interpolated.

  • Default severity: info
  • Minimum confidence: medium
  • Implementation phase: 3
  • Fix: none
  • Superseded by MLP208 when the source or target is a Text/TeX family (one specialized diagnostic instead of two)

Emission gate (DESIGN §7.3, cited in evidence): source family N_family >= 32 (transform-family-gate) or estimated curve insertion |C(source) − C(target)| >= 256 (transform-curve-insertion-gate), both measured at the play site (pre-play geometry). Only proven lower bounds confirm; loop-built families widen to open intervals and stay silent, and any count-changing mutation before the play voids the claim. Maybe-path plays never fire.

Wrong

class Demo(Scene):
    def construct(self):
        group = VGroup(*squares_40)   # 41 family members, confirmed
        target = Circle()
        self.add(group)
        self.play(Transform(group, target))  # copy + align + interpolate all 41
class Demo(Scene):
    def construct(self):
        group = VGroup(*squares_40)
        target = Circle()
        self.add(group)
        # Fade the group against the new shape instead of aligning every
        # member's curves, or transform only the submobject that changes.
        self.play(FadeOut(group), FadeIn(target))