diff --git a/src/cities/socal.ts b/src/cities/socal.ts index b0c31f1..6302c5e 100644 --- a/src/cities/socal.ts +++ b/src/cities/socal.ts @@ -2116,8 +2116,8 @@ export const LANDMARKS: Landmark[] = [ * same reason. One instance here is a city block, not a building, and a block * reads as its tallest thing. * - * The whole set comes to about fifty-five thousand instances, against San - * Francisco's ninety. Fewer buildings over twenty times the district area is + * The whole set comes to about fifty-five thousand instances, against the + * Bay Area's eighty-three. Fewer buildings over twenty times the district area is * the arithmetic working correctly, not a gap to be filled: a scene unit is * four times longer, so a lot covers sixteen times the ground. */ @@ -2898,24 +2898,30 @@ export const DISTRICTS: District[] = [ // ---- Focus regions -------------------------------------------------------- /** - * The seven rectangles that get fine terrain, at about 80 m; everywhere else is - * six times coarser, at about 480 m. + * The two rectangles that get fine terrain, at about 80 m; everywhere else is + * ten times coarser, at about 800 m. * * This is the trade ARCHITECTURE.md §5 asked for, and the arithmetic is worth * writing down because it is the whole argument for the feature existing. * Uniform 80 m cells over this frame would be 1.08° / 0.00072 by 1.66° / * 0.00086 — just under 2.9 million lattice points, several seconds of build, - * and a mesh with nothing in most of it. Coarse everywhere is 80,500. The seven - * boxes below add about 120,000 back, in the places a camera actually stops, - * for a total near 200,000: comfortably under San Francisco's 337,000, on a - * board twenty-five times the size. + * and a mesh with nothing in most of it. What ships is 0.13 million, and the + * whole city builds in about 2.3 seconds. * - * Where a box is *not* is as considered as where it is. The San Fernando Valley - * and the harbour both get chapters and neither gets a box, because both are - * flat: fine cells there would buy several thousand extra triangles of - * absolutely level ground. The relief that matters at those two stops is the - * range behind the Valley and the coastline around the port, and neither is - * inside the frame the camera is pointed at. + * It was seven boxes when this pack was written, and that did not survive + * contact with the engine. `buildAxis` in world.ts refines **per axis**, not + * per rectangle: a focus region sharpens its whole row *and* its whole column, + * so seven boxes scattered across a basin this wide refine most of the basin + * between them. Measured, on this data: seven regions came to 0.73 million + * points and a 6.6 second field build; two come to 0.13 million and 0.8. The + * boxes that stayed are the two the camera spends its time in. + * + * Where a box is *not* is as considered as where it is. The San Fernando + * Valley and the harbour both get chapters and neither gets a box, because + * both are flat: fine cells there would buy several thousand extra triangles + * of absolutely level ground. The relief that matters at those two stops is + * the range behind the Valley and the coastline around the port, and neither + * is inside the frame the camera is pointed at. */ export const FOCUS_REGIONS: FocusRegion[] = [ { minLat: 34.01, maxLat: 34.09, minLng: -118.3, maxLng: -118.19 }, @@ -3100,7 +3106,7 @@ export const SOCAL_CITY: City = { */ verticalExaggeration: 3.4, - // ~80 m inside a focus region, ~480 m outside one. See FOCUS_REGIONS for the + // ~80 m inside a focus region, ~800 m outside one. See FOCUS_REGIONS for the // arithmetic; the short version is that this is the difference between // 200,000 lattice points and 2.8 million. cellLat: 0.00072,