# Original parked street vehicles

`street-vehicles.js` imports nothing. Supply the application's Three.js module and geographic helpers:

```js
import {createStreetVehicles} from './street-vehicles.js';
const parkedVehicles=createStreetVehicles({THREE,osm,xy,height:terrainHeight,buildingAt,onLand});
scene.add(parkedVehicles.group);
```

It returns `{group,stats,placements,dispose}`. Replace the old car-building part of `createStreetLife`; do not keep both sets of cars. It adds no lamps, animated traffic, roads, or gameplay collisions.

Actual recovered-map validation: **64 vehicles, five material draw calls, 91,344 triangles**. Mix: 43 compact cars, 14 hatchbacks, seven small vans. Each compact/hatchback is 1,422 triangles; each van is 1,470. Geometry uses original bevelled extruded bodywork with open wheel arches, sloped dark glazing, roofs/pillars, mirrors, tires/alloy faces, headlights/tail lamps, bumpers and blank license plates. No logos or brands. Paint varies through off-white, silver, graphite, muted blue, burgundy, and occasional pale yellow. All material and mesh batches are shared.

Locations follow the recovered map's residential, living-street, secondary, and tertiary street segments within −66.1215 to −66.1110 longitude and 18.4631 to 18.46835 latitude. There is one parking row per segment. Vehicle centers are offset to a curb using the same road half-widths as `architecture.js`; road geometry is unchanged. Mapped one-way direction is respected. Candidates stay away from intersections, neighbouring parked vehicles, footways, pedestrian streets, buildings, water and steep terrain discontinuities. Building/land clearance samples the oriented rectangle, including corners and edge midpoints, with extra body/mirror allowance. The placement validator also checks nearby street mouths against that rectangle.

Vehicle ground orientation fits the four wheel support positions to the terrain. The support plane sits at the existing road ribbon's `height + 0.18 m`, and candidates with more than 0.025 m non-planarity at any wheel are rejected. Cars stay parked; no animation is required.

Validation script: `check-street-vehicles.mjs`. Audit record: `street-vehicles-audit.json`. Geometry checks returned no non-finite values or vehicle origin in a non-fort building. Counts and bounding checks use actual OSM footprints, coastline polygons, and the recovered filled DEM grid.

These vehicle designs and parking locations are original artistic interpretations tied to mapped roads, not a surveyed parking inventory or statement that parking is legal at each position. Keep the application's existing OSM attribution.
