Generate simple Manim code for Scene 1.

FOLLOW THE PLAN EXACTLY - use only the specified objects and positions.

PLAN: **Positioning Plan:**

**Object List:**  
1. Object 1: Text - Title "Projectile Motion Basics" - TOP zone  
2. Object 2: VGroup (Rectangle + Circle + Dot + Arrow + 2 dashed Lines) - Cannon and projectile visualization - CENTER zone  
3. Object 3: MathTex - Labels for velocity components "v_x" and "v_y" - LOWER zone (optional)

**Exact Positioning:**  
- Object 1: `Text("Projectile Motion Basics").to_edge(UP)` (y=3.0)  
- Object 2:  
  - Rectangle (cannon base) + Circle (cannon barrel) placed together, centered at y=0  
  - Dot (projectile) positioned at barrel exit, near center (y=0)  
  - Arrow (initial velocity vector) originating at Dot, angled upwards-right  
  - Two dashed Lines (Line with stroke_dash_array) representing horizontal and vertical velocity components as perpendicular arrows from Dot  
  - Entire group `.center()` (y=0)  
- Object 3: Two MathTex labels "v_x" and "v_y" placed near the ends of horizontal and vertical dashed arrows, shifted DOWN*1.5 (y=-1.5)

**Animation Sequence:**  
1. `self.play(Write(object1))`  
2. `self.wait(0.5)`  
3. `self.play(Create(object2))`  
4. `self.wait(0.5)`  
5. (Optional) `self.play(Write(object3))`  

**Visual Concept:**  
This scene visually demonstrates projectile motion by illustrating a simple cannon launching a projectile dot with an initial velocity vector. It decomposes this velocity into horizontal and vertical components shown as dashed perpendicular arrows, reinforcing the vector breakdown concept in projectile motion.

**MANDATORY TEMPLATE:**
```python
from manim import *

class Scene1(Scene):
    def construct(self):
        # Create 2-3 simple objects with clear positioning
        # Animate them one by one
        # Use self.wait(2) at the end
```

**STRICT SYNTAX RULES:**

**Positioning (EXACT methods):**
- Titles: .to_edge(UP)
- Center: .center() 
- Below center: .shift(DOWN*1.5)
- Use .next_to(obj, DOWN, buff=1.0) for relative positioning

**Colors (NO quotes):**
- color=BLUE, color=RED, color=GREEN, color=WHITE only
- NO "BLUE" or 'BLUE' - only BLUE

**Object Creation (SIMPLE only):**
- Text("text")
- MathTex("equation")
- Circle(radius=1.0, color=BLUE)
- Rectangle(width=2, height=1, color=RED)
- Line(start=LEFT, end=RIGHT, color=GREEN)
- Arrow(start=ORIGIN, end=UP, color=WHITE)
- Dot(color=RED)

**Animation (ONE at a time):**
```python
self.play(Write(obj1))
self.wait(0.5)
self.play(Create(obj2))
self.wait(0.5)
self.play(FadeIn(obj3))  # if needed
self.wait(2)
```

**FORBIDDEN:**
- Axes() or coordinate systems
- FunctionGraph() 
- VGroup()
- Complex transformations
- Multiple simultaneous animations
- ANY config dictionaries

**SIMPLE EXAMPLE:**
```python
from manim import *

class Scene1(Scene):
    def construct(self):
        title = Text("Basic Physics").to_edge(UP)
        equation = MathTex("F = ma").center()
        label = Text("Newton's Second Law").shift(DOWN*1.5)
        
        self.play(Write(title))
        self.wait(0.5)
        self.play(Write(equation))
        self.wait(0.5)
        self.play(Write(label))
        self.wait(2)
```

Return ONLY the Python code with NO extra text.