 |
CLIP Score: 26.23
from AIDL import *
def city_skyline(num_buildings: int = 10, min_width: float = 0.5*inch, max_width: float = 1.5*inch, min_height: float = 2*inch, max_height: float = 10*inch):
"""
Generates a city skyline with a specified number of buildings.
Each building is a simple rectangle or triangle with varying heights and widths.
"""
import random
skyline = Assembly()
base = Solid()
skyline.base = base
# Base platform for the buildings
base.platform = Rectangle((num_buildings*min_width/2, -0.5*inch), num_buildings*min_width, 1*inch)
buildings = []
base_position = 0.0
for i in range(num_buildings):
building_type = random.choice(['rectangle', 'triangle'])
building_height = random.uniform(min_height, max_height)
building_width = random.uniform(min_width, max_width)
if building_type == 'rectangle':
building = Solid()
building.shape = Rectangle((base_position + building_width/2, building_height/2), building_width, building_height)
elif building_type == 'triangle':
building = Solid()
building.shape = Triangle((base_position + building_width/2, building_height/2), building_width, building_height)
buildings.append(building)
base_position += building_width + random.uniform(0.1*inch, 0.3*inch) # Gap between buildings
# Attach buildings to the base
for i, building in enumerate(buildings):
skyline.__setattr__(f'building_{i}', building)
return skyline
with AIDL_2D:
model = city_skyline()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a city skyline
Sure! To generate a city skyline, we'll create a series of buildings with varying heights and widths along a base. The skyline could include different shapes of buildings to make it more interesting. Let's build a function that generates a city skyline. We will use basic geometric shapes like rectangles and triangles to represent the buildings.
Here is how the AIDL program for a city skyline might look:
```python
from AIDL import *
def city_skyline(num_buildings: int = 10, min_width: float = 0.5*inch, max_width: float = 1.5*inch, min_height: float = 2*inch, max_height: float = 10*inch):
"""
Generates a city skyline with a specified number of buildings.
Each building is a simple rectangle or triangle with varying heights and widths.
"""
import random
skyline = Assembly()
base = Solid()
skyline.base = base
# Base platform for the buildings
base.platform = Rectangle((num_buildings*min_width/2, -0.5*inch), num_buildings*min_width, 1*inch)
buildings = []
base_position = 0.0
for i in range(num_buildings):
building_type = random.choice(['rectangle', 'triangle'])
building_height = random.uniform(min_height, max_height)
building_width = random.uniform(min_width, max_width)
if building_type == 'rectangle':
building = Solid()
building.shape = Rectangle((base_position + building_width/2, building_height/2), building_width, building_height)
elif building_type == 'triangle':
building = Solid()
building.shape = Triangle((base_position + building_width/2, building_height/2), building_width, building_height)
buildings.append(building)
base_position += building_width + random.uniform(0.1*inch, 0.3*inch) # Gap between buildings
# Attach buildings to the base
for i, building in enumerate(buildings):
skyline.__setattr__(f'building_{i}', building)
return skyline
with AIDL_2D:
model = city_skyline()
print(model.Solve())
model.Render()
```
In this program:
1. We create an `Assembly` node for the skyline, and a `Solid` node for the base platform.
2. We place a series of buildings on the base platform.
3. Each building is generated with a random width and height within specified ranges.
4. Buildings can be either rectangles or triangles, chosen randomly.
5. We space the buildings apart with some random gap to add variation.
6. Finally, the buildings are attached to the base platform and rendered.
You can adjust the number of buildings, minimum and maximum widths, heights, and spacing to customize the skyline. This should give you a good starting point to create a dynamic city skyline.
|