Generates synthetic datasets for triangle orthocenter construction. The agent must draw the three altitudes of a triangle (each from a vertex perpendicular to the opposite side) and identify their common intersection — the orthocenter — selecting which option label coincides with it.
Each sample pairs a task (first frame + prompt describing what needs to happen) with its ground truth solution (final frame showing the result + video demonstrating how to achieve it). This structure enables both model evaluation and training.
| Property | Value |
|---|---|
| Task ID | Multi-28 |
| Task | Triangle Orthocenter Construction |
| Category | Constructive Geometry |
| Resolution | 1024×1024 px |
| FPS | 16 fps |
| Duration | varies |
| Output | PNG images + MP4 video |
# 1. Clone the repository
git clone https://github.com/VBVR-DataFactory/Multi-28_triangle_orthocenter_construction_data-generator.git
cd Multi-28_triangle_orthocenter_construction_data-generator
# 2. Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# 3. Install dependencies
pip install --upgrade pip
pip install -r requirements.txt
pip install -e .# Generate 50 samples
python examples/generate.py --num-samples 50
# Reproducible generation with seed
python examples/generate.py --num-samples 50 --seed 42
# Custom output directory
python examples/generate.py --num-samples 100 --output data/my_dataset
# Without videos (faster, images only)
python examples/generate.py --num-samples 50 --no-videos| Argument | Description |
|---|---|
--num-samples |
Number of tasks to generate (required) |
--output |
Output directory (default: data/questions) |
--seed |
Random seed for reproducibility |
--no-videos |
Skip video generation (images only) |
[Scenario] The image shows a triangle and several option markers.
[Rules]
1. An altitude of a triangle is a perpendicular line segment from a vertex to the line containing the opposite side.
2. The orthocenter is the single point where all three altitudes intersect.
[Task] Generate a video animating the drawing of the three altitudes of the triangle. Keep the altitude lines visible, and highlight in red the single option marker located at their intersection (the orthocenter). Hold the final frame.
![]() |
![]() |
![]() |
| Initial Frame Triangle + option labels |
Animation Three altitudes drawn one by one |
Final Frame Orthocenter found; correct option highlighted in red |
Construct the three altitudes of a given triangle (each drawn from a vertex perpendicular to the opposite side, possibly extended) and identify which of several option labels lies at their common intersection — the orthocenter.
- Triangle: Three labeled vertices forming a triangle (acute, right, or obtuse).
- Altitude: From each vertex, drop a perpendicular onto the opposite side (extending the side if needed for obtuse triangles).
- Concurrence: The three altitudes always meet at a single point — the orthocenter — by classical geometry.
- Option labels: A, B, C, D candidate points placed near the expected orthocenter.
- Solver: Closed-form intersection of two altitude equations.
- Three-altitude concurrence: The orthocenter's location depends globally on all three vertices — moving any vertex shifts it.
- Right-angle constraint: Each altitude must be exactly perpendicular to its target side, demanding precise angular construction.
- Position varies dramatically with triangle type: Acute → inside, right → on a vertex, obtuse → outside the triangle. Models must adapt to all cases.
- Visible construction: Each altitude renders as a separate animation phase, with the orthocenter emerging from their shared intersection.
data/questions/Multi-28_triangle_orthocenter_construction_data-generator_task/Multi-28_triangle_orthocenter_construction_data-generator_00000000/
├── first_frame.png # Triangle + option labels
├── final_frame.png # Altitudes drawn + orthocenter marked
├── prompt.txt # Task instruction
├── ground_truth.mp4 # Animation of stepwise construction
└── question_metadata.json # Standardized VBVR task metadata
File specifications:
- Images: 1024×1024 PNG format
- Video: MP4 format, 16 fps, H.264 + yuv420p
- Metadata: VBVR canonical schema with
task_id,vbvr_task_code,media,parameters
orthocenter triangle-altitude geometric-construction concurrence multiple-choice multi-step-reasoning
Part of the 36-Task Long-Horizon Multi-Step Reasoning Benchmark.


