 |
CLIP Score: 28.43
from AIDL import *
def city_skyline(
skyline_width: float = 20 * inches,
skyline_height: float = 10 * inches,
num_buildings: int = 10,
min_building_width: float = 1 * inch,
max_building_width: float = 3 * inches,
min_building_height: float = 3 * inches,
max_building_height: float = 10 * inches
):
city = Solid()
import random
random.seed(42) # for reproducibility
current_x = -skyline_width / 2
for i in range(num_buildings):
building_width = random.uniform(min_building_width, max_building_width)
building_height = random.uniform(min_building_height, max_building_height)
building_x = current_x + building_width / 2
building = Solid(shift=(building_x, 0))
building.geometry = Rectangle(
(0, building_height / 2), building_width, building_height)
city.__setattr__(f'building_{i}', building)
current_x += building_width
return city
with AIDL_2D:
model = city_skyline()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a city skyline
Sure! Let's create an AIDL program to generate a city skyline.
Here's a step-by-step approach:
1. **Define the dimensions and parameters**: We'll specify the base width and height of the skyline, and some basic parameters for the buildings.
2. **Structure of the model**: Our model will consist of multiple Solid substructures, each representing a building in the skyline.
3. **Geometry of buildings**: Each building will be represented by a rectangle or multiple rectangles stacked together to create an interesting skyline.
Let's go ahead and construct the program:
```python
from AIDL import *
def city_skyline(
skyline_width: float = 20 * inches,
skyline_height: float = 10 * inches,
num_buildings: int = 10,
min_building_width: float = 1 * inch,
max_building_width: float = 3 * inches,
min_building_height: float = 3 * inches,
max_building_height: float = 10 * inches
):
city = Solid()
import random
random.seed(42) # for reproducibility
current_x = -skyline_width / 2
for i in range(num_buildings):
building_width = random.uniform(min_building_width, max_building_width)
building_height = random.uniform(min_building_height, max_building_height)
building_x = current_x + building_width / 2
building = Solid(shift=(building_x, 0))
building.geometry = Rectangle(
(0, building_height / 2), building_width, building_height)
city.__setattr__(f'building_{i}', building)
current_x += building_width
return city
with AIDL_2D:
model = city_skyline()
print(model.Solve())
model.Render()
```
Here's a breakdown of the code:
1. **Function Definition**: The `city_skyline` function takes several parameters to control the dimensions and number of buildings.
2. **City Structure**: The main `Solid` object `city` contains all the buildings.
3. **Random Seed**: We set a seed for reproducibility using Python's random module.
4. **Loop through Building Creation**: For each building, a width and height are randomly chosen within the specified ranges. Each building is represented as a `Solid` with a `Rectangle` geometry.
5. **Return the Model**: The function returns the `city` structure, which contains all the buildings.
6. **Rendering the Model**: We create the model, solve it, and render it.
Feel free to modify the parameters for more customized skylines, or add additional details like windows or roofs as per your requirements.
|