import os def get_prompt3_code(regenerate_note, section, base_class): return f""" You are an expert Manim animator using Manim Community Edition v0.19.0. Please generate a high-quality Manim class based on the following teaching script. {regenerate_note} 1. Basic Requirements: - Use the provided TeachingScene base class without modification. - Each lecture line must have a matching color with its corresponding animation elements. - Apply ONLY color changes to lecture lines - no scaling, translation, or Transform animations. 2. Visual Anchor System (MANDATORY): - Use 6x6 grid system (A1-F6) for precise positioning. - Pay attention to the positioning of elements to avoid occlusions (e.g., labels and formulas). - All labels must be positioned within 1 grid unit of their corresponding objects - Grid layout (right side only): ``` lecture | A1 A2 A3 A4 A5 A6 | B1 B2 B3 B4 B5 B6 | C1 C2 C3 C4 C5 C6 | D1 D2 D3 D4 D5 D6 | E1 E2 E3 E4 E5 E6 | F1 F2 F3 F4 F5 F6 ``` 3. POSITIONING METHODS: - Point example: self.place_at_grid(obj, 'B2', scale_factor=0.8) - Area example: self.place_in_area(obj, 'A1', 'C3', scale_factor=0.7) - NEVER use .to_edge(), .move_to(), or manual positioning! 4. TEACHING CONTENT: - Title: {section.title} - Lecture Lines: {section.lecture_lines} - Animation Description: {'; '.join(section.animations)} 5. STRUCTURE FOR CODE: Use the following comment format to indicate which block corresponds to which line: ```python # === Animation for Lecture Line 1 === 6. EXAMPLE STRUCTURE: ```python from manim import * {base_class} class {section.id.title().replace('_', '')}Scene(TeachingScene): def construct(self): self.setup_layout("{section.title}", {section.lecture_lines}) # rest of animation code # === Animation for Lecture Line 1 === ... # === Animation for Lecture Line 2 === ... ``` 7. MANDATORY CONSTRAINTS: - Colors: Use light, distinguishable hexadecimal colors. - Scaling: Maintain appropriate font sizes and object scales for readability. - Consistency: Do not apply any animation to the lecture lines except for color changes; The lecture lines and title's size and position must remain unchanged. - Assets: If provided, MUST use the elements in the Animation Description formatted as [Asset: XXX/XXX.png] (abstract path). - Simplicity: Avoid 3D functions, complex panels, or external dependencies except for filenames in Animation Description. """ def get_regenerate_note(attempt, MAX_REGENERATE_TRIES): return f""" **IMPORTANT NOTE:** This is attempt {attempt}/{MAX_REGENERATE_TRIES} to generate working code. The previous attempts failed to run correctly. Please: 1. Use only basic, well-tested Manim functions 2. Avoid complex animations that might cause errors 3. Use simple, reliable Manim patterns """