Generates synthetic tasks where circles of different sizes and colors are randomly arranged. The goal is to rearrange them on a horizontal line, sorted by circumference from largest to smallest.
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 | G-174 |
| Task | Arrange Circles By Circumference |
| Category | Perception |
| Resolution | 1024×1024 px |
| FPS | 16 fps |
| Duration | ~5 seconds |
| Output | PNG images + MP4 video |
# Clone the repository
git clone https://github.com/VBVR-DataFactory/G-174_arrange_circles_by_circumference_data-generator.git
cd G-174_arrange_circles_by_circumference_data-generator
# Install dependencies
pip install -r requirements.txt# Generate 100 samples
python examples/generate.py --num-samples 100
# Generate with specific seed
python examples/generate.py --num-samples 100 --seed 42
# Generate without videos
python examples/generate.py --num-samples 100 --no-videos
# Custom output directory
python examples/generate.py --num-samples 100 --output data/my_output| Argument | Type | Description | Default |
|---|---|---|---|
--num-samples |
int | Number of samples to generate | 100 |
--seed |
int | Random seed for reproducibility | Random |
--output |
str | Output directory | data/questions |
--no-videos |
flag | Skip video generation | False |
The scene shows 7 circles of different sizes and colors arranged randomly.
Keep every circle unchanged in size and color. Only rearrange their positions.
Align all circles on a single horizontal line. Center the entire row of circles in the image.
Sort them from left to right by circumference, from largest to smallest.
![]() |
![]() |
![]() |
| Initial Frame Circles randomly arranged |
Animation Circles moving to sorted positions |
Final Frame Circles sorted by circumference, largest to smallest |
Rearrange randomly placed circles onto a horizontal line, sorted by their circumference (largest to smallest from left to right), while preserving their size and color.
- Circle Count: 5-10 circles per image
- Circle Radius: 30-80 pixels (varied sizes)
- Radius Constraints:
- Minimum 4-pixel gap between any two radii (ensures unique ordering)
- Minimum 1.15× ratio between adjacent sorted radii (ensures visually obvious differences)
- Color Palette: 10 distinct colors for easy visual tracking
- Alignment: All circles aligned horizontally at image center
- Spacing: Minimum 16-pixel gap between circles when aligned
- Size-based sorting: Circles sorted by circumference (2πr), equivalent to sorting by radius
- Visual clarity: Significant size differences between adjacent circles (≥15% larger)
- Color preservation: Circle colors remain unchanged during rearrangement
- Centered layout: Final arrangement centered horizontally and vertically
- Smooth animation: 5-second animation showing circles moving to their sorted positions
- No overlaps: Adequate spacing ensures circles never overlap in initial or final states
data/questions/arrange_circles_by_circumference_task/arrange_circles_by_circumference_00000000/
├── first_frame.png # Initial state (random arrangement)
├── final_frame.png # Goal state (sorted by circumference)
├── prompt.txt # Task instructions
├── ground_truth.mp4 # Solution video (16 fps)
└── metadata.json # Task metadata
File specifications: Images are 1024×1024 PNG. Videos are MP4 at 16 fps, approximately 5 seconds long showing the rearrangement process.
sorting geometry circumference spatial-arrangement size-comparison ordering


