From f301f46f913b26131a8f0278b8ad7b4e5fd9caf0 Mon Sep 17 00:00:00 2001 From: Xeon0X Date: Wed, 19 Jun 2024 13:42:26 +0200 Subject: [PATCH] Error detection in bresenham circle --- main.py | 109 +++++++++++-------- networks/geometry/Circle.py | 61 ++++++++++- networks/geometry/Segment2D.py | 17 ++- networks/roads_2/Road.py | 26 ++++- world_maker/data/building.png | Bin 255 -> 117 bytes world_maker/data/building_moutain.png | Bin 311 -> 89 bytes world_maker/data/city_map.png | Bin 972 -> 418 bytes world_maker/data/district.png | Bin 1099 -> 766 bytes world_maker/data/heightmap.png | Bin 6609 -> 3320 bytes world_maker/data/heightmap_smooth.png | Bin 3668 -> 1815 bytes world_maker/data/heightmap_with_building.png | Bin 4245 -> 2174 bytes world_maker/data/highwaymap.png | Bin 269 -> 194 bytes world_maker/data/mountain_map.png | Bin 825 -> 608 bytes world_maker/data/removed_treesmap.png | Bin 604 -> 121 bytes world_maker/data/roadmap.png | Bin 540 -> 322 bytes world_maker/data/skeleton_highway.png | Bin 6480 -> 3466 bytes world_maker/data/skeleton_highway_area.png | Bin 292 -> 290 bytes world_maker/data/skeleton_mountain.png | Bin 6764 -> 4182 bytes world_maker/data/skeleton_mountain_area.png | Bin 354 -> 505 bytes world_maker/data/smooth_sobel_watermap.png | Bin 1100 -> 627 bytes world_maker/data/smooth_terrain_delta.png | Bin 2773 -> 1032 bytes world_maker/data/sobelmap.png | Bin 8014 -> 3843 bytes world_maker/data/treemap.png | Bin 4645 -> 569 bytes world_maker/data/watermap.png | Bin 101 -> 208 bytes 24 files changed, 156 insertions(+), 57 deletions(-) diff --git a/main.py b/main.py index 3c36815..7fcb6f3 100644 --- a/main.py +++ b/main.py @@ -7,66 +7,83 @@ from world_maker.data_analysis import transpose_form_heightmap from world_maker.Skeleton import Skeleton, simplify_coordinates from world_maker.terraforming import remove_trees, smooth_terrain from networks.geometry.Point3D import Point3D +from networks.geometry.Point2D import Point2D from networks.roads_2.Road import Road from networks.legacy_roads import roads from world_maker.District import Road as Road_grid +from networks.geometry.Circle import Circle from House import * +from gdpc import Editor, Block def main(): - - rectangle_house_mountain, rectangle_building, skeleton_highway, skeleton_mountain, road_grid = world_maker() - editor = Editor(buffering=True) - buildArea = editor.getBuildArea() - origin = ((buildArea.begin).x, (buildArea.begin).z) + c = Circle(Point2D(400, -75)).circle_thick_by_line(5, 32) + for i in range(len(c[0])): + for j in range(len(c[0][i])): + if i % 2 == 0: + editor.placeBlock( + (c[0][i][j].x, 110, c[0][i][j].y), Block("white_concrete")) + else: + editor.placeBlock( + (c[0][i][j].x, 110, c[0][i][j].y), Block("black_concrete")) + print(c[1]) + for i in range(len(c[1])): + for j in range(len(c[1][i])): + editor.placeBlock( + (c[1][i][j].x, 110, c[1][i][j].y), Block("red_concrete")) + # rectangle_house_mountain, rectangle_building, skeleton_highway, skeleton_mountain, road_grid = world_maker() - remove_trees('./world_maker/data/heightmap.png', './world_maker/data/treemap.png', - './world_maker/data/smooth_sobel_watermap.png') - smooth_terrain('./world_maker/data/heightmap.png', - './world_maker/data/heightmap_smooth.png', './world_maker/data/smooth_sobel_watermap.png') + # editor = Editor(buffering=True) + # buildArea = editor.getBuildArea() + # origin = ((buildArea.begin).x, (buildArea.begin).z) - # set_roads(skeleton_mountain, origin) - # set_roads(skeleton_highway, origin) - # set_roads_grids(road_grid, origin) - # roads.setRoads(skeleton_mountain) - # roads.setRoads(skeleton_highway) + # remove_trees('./world_maker/data/heightmap.png', './world_maker/data/treemap.png', + # './world_maker/data/smooth_sobel_watermap.png') + # smooth_terrain('./world_maker/data/heightmap.png', + # './world_maker/data/heightmap_smooth.png', './world_maker/data/smooth_sobel_watermap.png') - blocks = { - "wall": "blackstone", - "roof": "blackstone", - "roof_slab": "blackstone_slab", - "door": "oak_door", - "window": "glass_pane", - "entrance": "oak_door", - "stairs": "quartz_stairs", - "stairs_slab": "quartz_slab", - "celling": "quartz_block", - "floor": "quartz_block", - "celling_slab": "quartz_slab", - "garden_outline": "oak_leaves", - "garden_floor": "grass_block" - } + # # set_roads(skeleton_mountain, origin) + # # set_roads(skeleton_highway, origin) + # # set_roads_grids(road_grid, origin) + # # roads.setRoads(skeleton_mountain) + # # roads.setRoads(skeleton_highway) - entranceDirection = ["N", "S", "E", "W"] + # blocks = { + # "wall": "blackstone", + # "roof": "blackstone", + # "roof_slab": "blackstone_slab", + # "door": "oak_door", + # "window": "glass_pane", + # "entrance": "oak_door", + # "stairs": "quartz_stairs", + # "stairs_slab": "quartz_slab", + # "celling": "quartz_block", + # "floor": "quartz_block", + # "celling_slab": "quartz_slab", + # "garden_outline": "oak_leaves", + # "garden_floor": "grass_block" + # } - for houses in rectangle_building: - start = (houses[0][0]+buildArea.begin[0], houses[0] - [1], houses[0][2]+buildArea.begin[2]) - end = (houses[1][0]+buildArea.begin[0], houses[1] - [1], houses[1][2]+buildArea.begin[2]) - house = House(editor, start, end, - entranceDirection[random.randint(0, 3)], blocks) - house.build() + # entranceDirection = ["N", "S", "E", "W"] - for houses in rectangle_house_mountain: - start = (houses[0][0]+buildArea.begin[0], houses[0] - [1], houses[0][2]+buildArea.begin[2]) - end = (houses[1][0]+buildArea.begin[0], houses[1] - [1], houses[1][2]+buildArea.begin[2]) - house = House(editor, start, end, - entranceDirection[random.randint(0, 3)], blocks) - house.build() + # for houses in rectangle_building: + # start = (houses[0][0]+buildArea.begin[0], houses[0] + # [1], houses[0][2]+buildArea.begin[2]) + # end = (houses[1][0]+buildArea.begin[0], houses[1] + # [1], houses[1][2]+buildArea.begin[2]) + # house = House(editor, start, end, + # entranceDirection[random.randint(0, 3)], blocks) + # house.build() + + # for houses in rectangle_house_mountain: + # start = (houses[0][0]+buildArea.begin[0], houses[0] + # [1], houses[0][2]+buildArea.begin[2]) + # end = (houses[1][0]+buildArea.begin[0], houses[1] + # [1], houses[1][2]+buildArea.begin[2]) + # house = House(editor, start, end, + # entranceDirection[random.randint(0, 3)], blocks) + # house.build() def set_roads_grids(road_grid: Road_grid, origin): diff --git a/networks/geometry/Circle.py b/networks/geometry/Circle.py index cda5585..3933a32 100644 --- a/networks/geometry/Circle.py +++ b/networks/geometry/Circle.py @@ -1,5 +1,5 @@ from math import cos, pi, sin -from typing import List +from typing import List, Dict import numpy as np @@ -17,6 +17,9 @@ class Circle: self.outer = None self.points_thick: List[Point2D] = [] + self.points_thick_by_line: List[List[Point2D]] = [] + self.gaps: List[Point2D] = [] + self.spaced_radius = None self.spaced_points: List[Point2D] = [] @@ -24,6 +27,7 @@ class Circle: return f"Circle(center: {self.center}, radius: {self.radius}, spaced_radius: {self.spaced_radius}, inner: {self.inner}, outer: {self.outer})" def circle(self, radius: int) -> List[Point2D]: + self.points = [] self.radius = radius center = self.center.copy() @@ -48,8 +52,59 @@ class Circle: break return self.points + def circle_thick_by_line(self, inner: int, outter: int) -> List[List[Point2D]]: + width = outter - inner + self.circle_thick_by_line = [[] for _ in range(width)] + for i in range(width): + self.circle_thick_by_line[i] = self.circle(inner + i) + if i > 0: + self.gaps.append(Circle._remove_gaps( + self.circle_thick_by_line[i], self.circle_thick_by_line[i-1])) + return self.circle_thick_by_line, self.gaps + + @staticmethod + def _remove_gaps(outter_line: List[Point2D], inner_line: List[Point2D]) -> List[Point2D]: + gaps = [] + for i in range(len(outter_line)): + if Circle._count_neighbors(outter_line[i], inner_line) == 0: + if Circle._count_neighbors(Point2D(outter_line[i].x-1, outter_line[i].y), inner_line) > 1: + if Point2D(outter_line[i].x-1, outter_line[i].y) not in outter_line: + gaps.append( + Point2D(outter_line[i].x-1, outter_line[i].y)) + if Circle._count_neighbors(Point2D(outter_line[i].x+1, outter_line[i].y), inner_line) > 1: + if Point2D(outter_line[i].x+1, outter_line[i].y) not in outter_line: + gaps.append( + Point2D(outter_line[i].x+1, outter_line[i].y)) + if Circle._count_neighbors(Point2D(outter_line[i].x, outter_line[i].y-1), inner_line) > 1: + if Point2D(outter_line[i].x, outter_line[i].y-1) not in outter_line: + gaps.append( + Point2D(outter_line[i].x, outter_line[i].y-1)) + if Circle._count_neighbors(Point2D(outter_line[i].x, outter_line[i].y+1), inner_line) > 1: + if Point2D(outter_line[i].x, outter_line[i].y+1) not in outter_line: + gaps.append( + Point2D(outter_line[i].x, outter_line[i].y+1)) + return gaps + + @ staticmethod + def _count_neighbors(point: Point2D, line: List[Point2D]) -> int: + neighbors = 0 + for i in range(len(line)): + if point.x == line[i].x: + if point.y == line[i].y: + return 0 + if point.y-1 == line[i].y: + neighbors += 1 + if point.y+1 == line[i].y: + neighbors += 1 + if point.y == line[i].y: + if point.x-1 == line[i].x: + neighbors += 1 + if point.x+1 == line[i].x: + neighbors += 1 + return neighbors + def circle_thick(self, inner: int, outer: int) -> List[Point2D]: - """Compute discrete value of a 2d-circle with thickness. + """Compute discrete value of a 2d-circle with thickness. From: https://stackoverflow.com/questions/27755514/circle-with-thickness-drawing-algorithm @@ -108,7 +163,7 @@ class Circle: From: https://stackoverflow.com/questions/8487893/generate-all-the-points-on-the-circumference-of-a-circle Args: - number (int): Number of coordinates to be returned. + number (int): Number of coordinates to be returned. radius (int): Radius of the circle. Returns: diff --git a/networks/geometry/Segment2D.py b/networks/geometry/Segment2D.py index 2acf5e8..01ba393 100644 --- a/networks/geometry/Segment2D.py +++ b/networks/geometry/Segment2D.py @@ -12,12 +12,13 @@ class Segment2D: self.end = end self.points: List[Point2D] = [] self.points_thick: List[Point2D] = [] + self.points_thick_by_line: List[Union[Point2D, int]] = [] self.thickness = None def __repr__(self): return str(f"Segment2D(start: {self.start}, end: {self.end}, points: {self.points})") - def segment(self, start: Point2D = None, end: Point2D = None, overlap: LINE_OVERLAP = LINE_OVERLAP.NONE, _is_computing_thickness: bool = False) -> Union[List[Point2D], None]: + def segment(self, start: Point2D = None, end: Point2D = None, overlap: LINE_OVERLAP = LINE_OVERLAP.NONE, _is_computing_thickness: int = 0) -> Union[List[Point2D], None]: """Modified Bresenham draw (line) with optional overlap. From: https://github.com/ArminJo/Arduino-BlueDisplay/blob/master/src/LocalGUI/ThickLine.hpp @@ -108,6 +109,8 @@ class Segment2D: >>> self.compute_thick_segment(self.start, self.end, self.thickness, self.thickness_mode) """ + self.points_thick_by_line = [[] for _ in range(thickness+1)] + start = self.start.copy() end = self.end.copy() @@ -158,7 +161,7 @@ class Segment2D: error += delta_2x self.segment( - start, end, overlap=LINE_OVERLAP.NONE, _is_computing_thickness=True) + start, end, overlap=LINE_OVERLAP.NONE, _is_computing_thickness=1) error = delta_2x - delta_x for i in range(thickness, 1, -1): @@ -173,7 +176,7 @@ class Segment2D: error += delta_2y self.segment( - start, end, overlap=overlap, _is_computing_thickness=True) + start, end, overlap=overlap, _is_computing_thickness=i) else: if swap: @@ -194,7 +197,7 @@ class Segment2D: error += delta_2x self.segment( - start, end, overlap=LINE_OVERLAP.NONE, _is_computing_thickness=True) + start, end, overlap=LINE_OVERLAP.NONE, _is_computing_thickness=1) error = delta_2x - delta_y for i in range(thickness, 1, -1): @@ -209,7 +212,7 @@ class Segment2D: error += delta_2x self.segment( - start, end, overlap=overlap, _is_computing_thickness=True) + start, end, overlap=overlap, _is_computing_thickness=i) return self.points_thick @@ -241,7 +244,9 @@ class Segment2D: ) def _add_points(self, points, is_computing_thickness): - if is_computing_thickness: + if is_computing_thickness > 0: self.points_thick.append(points.copy()) + self.points_thick_by_line[is_computing_thickness].append( + (points.copy())) else: self.points.append(points.copy()) diff --git a/networks/roads_2/Road.py b/networks/roads_2/Road.py index bffd365..a52b49f 100644 --- a/networks/roads_2/Road.py +++ b/networks/roads_2/Road.py @@ -62,8 +62,30 @@ class Road: # Get nearest in x,z projection nearest = self.polyline.segments[i].points_thick[j].nearest( Point3D.to_2d(self.polyline_total_line_output, removed_axis='y'), True) - self.output_block.append( - (Point3D.insert_3d([self.polyline.segments[i].points_thick[j]], 'y', [self.polyline_total_line_output[nearest[0]].y])[0].coordinates, Block("stone"))) + # self.output_block.append( + # (Point3D.insert_3d([self.polyline.segments[i].points_thick[j]], 'y', [self.polyline_total_line_output[nearest[0]].y])[0].coordinates, Block("stone"))) + for k in range(len(self.polyline.segments[i].points_thick_by_line)): + match k: + case 0: + blob = 'black_concrete' + case 1: + blob = 'red_concrete' + case 2: + blob = 'orange_concrete' + case 3: + blob = 'yellow_concrete' + case 4: + blob = 'green_concrete' + case 5: + blob = 'blue_concrete' + case 6: + blob = 'purple_concrete' + + for m in range(len(self.polyline.segments[i].points_thick_by_line[k])): + nearest = self.polyline.segments[i].points_thick_by_line[k][m].nearest( + Point3D.to_2d(self.polyline_total_line_output, removed_axis='y'), True) + self.output_block.append( + (Point3D.insert_3d([self.polyline.segments[i].points_thick_by_line[k][m]], 'y', [self.polyline_total_line_output[nearest[0]].y])[0].coordinates, Block(blob))) for i in range(1, len(self.polyline.centers)-1): # Circle diff --git a/world_maker/data/building.png b/world_maker/data/building.png index 0592ddcb5c4b8ca170835e3ae1c89a0a380641a3..6616794c8e9ba060963756fbdd29fb1fc98251dd 100644 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^sUXY&Bp3?Ci-ducji-xaNX4ADXBYA^DDb!*Je1~h zF3TdtIf(g*U+9gXv+QBl#U*R?^Se^MBy6*9`4I&ka@i0kR< K=d#Wzp$PyHB_s3z literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^(?OU6NHExbnYI*29rJW?45^s&_Rc}BCI=CR!0x)W zp%;{Xoyic~^6GYzSd&KIiQ-Fgh3DL61n$(}$(yr`k>Q8`?vpcLSG)+bcpJ3q+dh-! zo7e9+?Ju cKuidTXVb7_U_8Tp#1X{zboFyt=akR{0MJztqyPW_ literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^(?OU6NHExbnYI*2{quBj45^s&_EzA!gANjH4;9m^ zcWh?Owu-hWzp+5ur?{ggYnJ^d8}THs*Jqbx8fWl=^zOT!^^*UN&5g2u`!j8Ap4jd( z+GP~FyUtCnroR4{_`9gmeI=<7xT=hIFTZV3UT(Gg+ID???6qIkz1i>T z&r4HhR@ce?I{5xfbLpyc)7SZ2U3c`l?Au*8ZrqVu_iO#>)ey0r&;PRPe-sXV?j7z1 zhs(0AKl~6@vd$@?2>_x^jbQ)) diff --git a/world_maker/data/city_map.png b/world_maker/data/city_map.png index 3204bd44944db30259b005dc3df8126eb50bbc62..b8cf5d9312c3d8218f2eacb54552fe20f39bd201 100644 GIT binary patch literal 418 zcmV;T0bTxyP)RSo%`5wX(gTBx9F(6rjs#tT~|B~w|prG z3j^$4452c(zuM&yAY75l6e3EWJ+S$8E@@2=!vgjOGuzUy^sqhqtZC5uV~@W4Ab1(t z^9!#u<@tq)V1`j>B=gvHjn7(HcbwCTTxq=4{Ziw$yLi;DPq0s(-p?ahXuR*qkmpUZ zApdT$COahw?oFY*_MhIv2tk%fYvGx!Mluecw_U!BJeFD6*O=yhS9AAyZ2nfkny`e$ znmRq5+Hz=I-c$y`qw#vPl(JFwAD@OhpZI=sdVP>(ylW1EAPD}+2Z+i$lA==70{{R3 M07*qoM6N<$g5tWuU;qFB literal 972 zcmV;-12g=IP)Lgg)JZ}M3s1G zK7uy-ivB8YjEn8({@Vm|UBu_rFU0d59UUF5Qw$-S%3?^Z734j04p@ht|9s?4g$#PQ zessmBEfPwukU(V5YD#y3mJ4LE$XwsjbG7TU+)7pC;If02HxdS!m|q{m#ru9 zNe`*N+H841E~er#O#35JL~{S0ZGA}QN)dN34&RuBnkpXRVt@hC#c7ThK&e^#3R-Ql zZ&gXj1u~8*$J_1kF4(79q&Z-Qemq-IM@N55#s1FZ z-EUr~JOEl%yuAroJ>TyEMyx|yn2cN>Hvps8?e$=cKd~H)^K({%?dnIfT#F6%-`Q)i z4wp{5adr61I}aOMsa3TQwHt{XAtAwlOc4K24fFhpFQSb}Z4y{&>f zhpbd*oC>&{SR_Dq4{AcbkjNMGKh!hwn3nv?l>F*D-6EO+#axr)XdzchuI*C&tun4; zti7l}Aqm%QDTm3Zd}B+3{C!@V{ftG5Dx+ogGW>dlMk$4m#K%uFd$se?7>P|r_TvVp uVfg*pwTVB{UQ3ZMzi)!o1_S8mPv{@%{jCE=5l3JE0000`sBMf zz7%%vU$6Mh|w~f8K;Ej+=}k_uDE} zW^ez>BTpvtL`A`Qjy#$9`Ij)+iV~v|7oQha-egdTCFZM@laV4ck9I>QH^28mCVJlC zfK2*)$U2$Ad75c5o%2V#WNPQNM#(hKw=I$>KM!DzO#k_b%E@{+nEGC*o-9ulUZ|C9 zIK3z`k6xX62H8WYG|8x?zEbL}vOINpp?b3FyihAyTA?+1fk-BB?AX20)bmU)_iyQi z$~EC~J}lY(la$!kZKvuhF)3a^XRAyY3$yD{z1x@|lgC1}`&XV(G8HVC@WOyh3kz1f zkdY~3!H^d+GA%6F@&a(Yo)ocQ&I{VzzcH`W-zbt9^Xj5SX4MNyWQM(;3I3r3ru7Ud4YqhEiY^)Yt9SX{$^K;UMcIy z+VujR>~cO>{eKi(No2Eknw@OxUMb59t?Bi+BD?ODT2$Y-h5!Hn07*qoM6N<$g8A-wL;wH) literal 1099 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 FV1iG>Vg>*J literal 3668 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 A?*IS* literal 4245 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 diff --git a/world_maker/data/highwaymap.png b/world_maker/data/highwaymap.png index 08a915d0578d6d27af68c08084b72a77d666e8c4..44c2fcb7dfc8b8daab38f3ca4d7fdef2705347dc 100644 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^sUXYBc!NX4ADXEq8RG7xaNsD6-# zk7ETx43p{(lj%;G4y=5#KRHq)EE5%2|7V2P`>$E^M_~CvElsABf|Lf9%vr(nLML)E zDT!}i81*i`K7Ee&8}HX*>()naDlnF<{1|Ywe68x{zrWr&Ec^Lu-Oq~1TPJk4_9Tc4 rYbMQ@UcRVyow`S%uAcK2@%m%Tk>@4e-{`4Y0dkzDtDnm{r-UW|f0IZQ literal 269 zcmV+o0rLKdP)q0002gNklls1##*GM;YHi5^?L`=vBPDQE(K=sY; z@Z=K-IyJk1^#p;DwE4pkwD@>mT(52dgWL T4b-$H00000NkvXXu0mjfY0P=v diff --git a/world_maker/data/mountain_map.png b/world_maker/data/mountain_map.png index f8f9f7cf0646d55e6728b6399075273fd44d73ab..9089607e765ce64c0efb867445e2c565116d5572 100644 GIT binary patch literal 608 zcmV-m0-ybfP)uv-g2!)4v|95tO%uV5dpqMnNCuwTC$Tui5>K@0|*4Eb6*495$S?it{hBU(zN*hf! z>x7Q82k>Nn6VU<;qtN}6jQJ?kwo)-wEDJI9h!JS5P+7S;3urB%VCQ*}-ShJLD@`j4 z^QIFoX!YmQ;%lF~&57ovyzW+H@fXWVOf_N1&WAHx)Uks_Q_u%d)sI)?f4Sem zXi$a8&oodi7hur5!*NlrhPTJ_#ZMH4bJ3jjALFBFb2i+ z6vN;*vhXCGhA?nmSe z%7@`+u{D@y#MWZKDQQ7MSJxC`JEI&m6(>%LRbnPFbtdb+dR}@@(X1B()8TY5?E1)d zX8AIEvN~ozljX_mDX+qY!!bI-3%9{Z(7Rm}u@`F&6{2?-!_Rf@-q2jb3{!9y#nRft zbY*UPFl9t?v0@DM47e4Lv5CJGjHRHh88H*v!V^sKWSp>YQkq;;#?QDIh*Nac{q-v< zPxTUswBozn-wJJyfr_J8dq+?)JibnxuMl9BFENCGcGj>Pf0qb9V8< zxU1@{MR6U@lG^+70vSje&Dc1~jfQc3fN^Fk75)UYZV~KQuIGOOx$a;GLi4{EuG%-w zs8GQDST8sVCwOz!_YWcsm@`-XI4Hn;xsDsGsGf~P&RlAmQ=VJ~Ec%8~G^(9XV)^;2 zGQZ8`#$^d2`EePsytu4bPF!XzA1(%K=RDf(Ef=mzM5Wvvql9(HtK~RY{O0)_vdlTr zT!^tn1m~(KFf3Q4smFxDg>s>SNLVf&O9u_)y1bS4NOX56jtdw>0&-~!NfV*CI^L?& zGZ=xm=2&mZ9E#ymU zERKZ;Io$!zCtzUc`NR{~10cbmc>)OLFwc>LF=vAFD$HZ>_dog4UiN(*|6a;<)XvQ( zY+tGSU9*N@()c>nnMMmc!u!Z~^})8SgE`e39Lk&2Xa3dhoY3YDuR77k;8#Mq?mICg z*MC{RH@3F@{Iv@9`kv!{g(a2S(L?&7Upk*0w2&VTJtdBJ|M>Q;)>mLT_tS)3&{n(S zIP!~k|B-jt*t&aPbaAgo#D38g%iEsY6Nd!!w|fqonvLkYH(&yz5pi6}q0006bNkl;!5YHWX(SA3LpksSgxSe_ zfbBGN)d0KJkN~JT(Z2PV6BZ!!AtnHF0NKqEBd=w zW6l#)*pjfH)^jhx`VhEQV9gFq9LID0HxZA0E$fNnJ~g739LqJLej>-sHVixyeJf5W zZ(VR*yy{!~j3w6~i-~*uvG6Sg zuV9{oIIA9q>>Hm6Ej?kEVrH+!9dJi1ZQFC+Ezb?Swm?{F=d`vC2VQ|}RDRLO=kUY5Gltc0a7RB9o^{m*p?RS1hWD|2#8^KFg1T9k0%=Ee+mB=;Z ziJAR~c?+(+$#tBK0cQ(3>CV!B-i?0nZO3=p1cS#Q0HFLqzDw}TR`X?JEx-Gs@xID0 qNb_5x{Q|>hj_02fuNGSV!~OsVcAAN&2Yk!`0000Bz{u(8;uumf=j|;+z9t6|2ghp_ z|Fx4-RYmj_n9fZROPFV$5?kgo`|RgEKYmI)-k>d0)_q(q{#n1ymDt~!GtPuB4POk0 zn-4SH`ZX`K%9JoX|91L~!s&nioB?YtKC<|^ANwf?2WDPz*Z#V5^>?Sm^`gMDeDB-0 z?Y&@eC+As7*a9k?cIZUO%5Usfy*EM zub-*+N=Q6l%EPL2mzE?I)oP?JlkNX|t@Lh9O;6#2o9nEOJm>$uZ}Fc$pP$cc>|)gt zTM@A!3CMVS^?H2X5giy8B7SgUwbDDEvt=TiA&TItu`zVi*J=Gbz?7Q3z+5+ce}n#~ zWvyKN=~vi9xkGdUHaZ+-66Ic_rDxEMuoIgpHrEgA6fVh5gJ^*3gfsl^dB6F-aXPv& z1y8Cj9=)HF_UHYjNU?Zp9)T5 zyaf#(G`Ak?u|A|<_}Z2O-J$cuJvYDQ*uJ?2Y!`9}qnSXY)PChTJ{Apfg3`cPXYh3O Kb6Mw<&;$TgW!WnL diff --git a/world_maker/data/skeleton_highway.png b/world_maker/data/skeleton_highway.png index 19baad834a279f8a13c537ee178fbe61c8fe1c0c..66aaf1780c9b28960b7c60ed1fd383894760b74c 100644 GIT binary patch literal 3466 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 literal 6480 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 O0000;Yb diff --git a/world_maker/data/skeleton_mountain_area.png b/world_maker/data/skeleton_mountain_area.png index 383a7a62207abbaa9aa7aa05c40ff2017e80d40d..2db1e91a5d1b9acc54cd1e1b423b61e32a939ef7 100644 GIT binary patch literal 505 zcmV|+QCM+{ljmn{iDDd!LytLIUBBH__Nkl~Q5(;~$F@vX@wS}kK zNiiB`&AEJmLOXs-;rZB$P7pb4A%~d9`q-cHr~EpFocMQJxR^sRDkiZ@v5i8n_%_Nu zn35S!CSsDwVBC6)k4druvz-eYv$nd}F&twqF`0rnDAc3**uumZ#fTU;!oV?pv_xZq zEC$9z85xTys|$_`6yIGa2XnsrDjaK)T~Ey?6qB6Q@R;PCJRIXi7(B*_mIO>x^J9}| zigpW4o{PJri$qAx7IhZ4Zy@juodp0>u?2WAwf+U?%iMQVK6*RYw?u_cGpI=jd4apC$7a#Xl}uN)C> z;Fb*tHyD~aNfV*A|c~~EB)c#Rd_E}Zd<*Fkg?={T+beFi8@xMaq_rO00000NkvXXu0mjfn91f5 literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^(?OU6NHExbnYNUHfl<@b#WAE}&f8n3`I-%QTrLKD z{aXDU1$G!^?LsbtML1|qEEm6 zn$$eA=;Xmw#l6$So2OpamRwUOTYQk`?^Ld5FMj(Noc=k3Bpve=WbYj-P={K*E+o9f&IR?M++)y_PRW|bfcJ+o%QP_wpRV?Ip?=pKAE+3zu88+ zWZA8)CeLQQwGHOlx$NzF-xcR0+;bIIPCqs?d)xOXlIAh(PH+A9E-Bjj{p8{h&p#@4 zdO;r=lJ>4TZIbafwR`E)Pe+sda+*x9pF957@2YX+?D$9b+&2h+R{auM=y&D+*^JV| x#q8g|J6^tbUw`*o#`jiwXDeQTJq#m$JZ4s{Qfg(5KYku0^uwq;3EJ diff --git a/world_maker/data/smooth_sobel_watermap.png b/world_maker/data/smooth_sobel_watermap.png index 36096fdd7fc5097ddbbc92a7a0ccae36ce2b43c3..e64228fe7686e62145095d4d64e845f1e9889924 100644 GIT binary patch literal 627 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 literal 2773 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 QyZ`_I07*qoM6N<$g7&p-mjD0& diff --git a/world_maker/data/treemap.png b/world_maker/data/treemap.png index 7e1a02df717e26ca0ac82e75e6a63f1323e68da9..801a9e89789935151430de96d6a4513dceeb88f6 100644 GIT binary patch literal 569 zcmV-90>=G`P)_J>#Ez<>Z8Ye(SVz6odPpVSdEFzBZ*v=3U0000000000 z00000000000DzC7xi8?aS+Ca~e&1|1gWg|DcR2`wsA}~3S%i{U2qYYbAe6-1Jvt6S zO-U?8O#uJ^0RFqhVljM`gO^}MUm!v$kXBXYBGf6*Hq3ETi7=mEtiL7^fEsePH>0-TEUP zlbP|I$MUGib=KAW$LVyUsASUA6lPuJh(c)}kxx_T-Ca~QD)LoTMT<#ym;HWEYA+Ur z(wzo}#iXh-MSi0%k;g^7J**MTd;Gc~nc|sOMS&ZI?WvP}=uWc)C$Oy(w{B*Ufgzy`k)$<#HLF zyxZ+abbuz5c2N%vde7X241t&#H_1l2xp*8})WeWRFykcc`wBr2$T-QH@d#wRLBmwH zY0us7?liAftKPZW?Uo6^1A{&(?WVo(`q8-}KWiSQ*uVP*Osls1z7tIv00000NkvXX Hu0mjfvdRPY literal 4645 zcmV+=658#FP) zOLH4V5XXBY75Gzez>r|sdRVe-IhDjI<-sLXxbP`BP$66hCPhL)62D`~1OkC7zEqNm zw9Ucvy0>>`wJYsPv)cJpsgy`sd8PfUyQin8M}Z|Y8Vv*hD3wZph=7Rj;>8PPdVQ@{ zL;AN;7ccWX4+eul=(yF@RVdEG46HrUi78S8#+(j`5YY`scD5p(D%-TCZFR%myhXw z=t?Q5Omk8stY))`CnqPdJ|qdN+wJ1BXU_u1Afm7OxWpCK+1Z&|U0p?boz5ct_S7NHXsxkXNtTXdvDyN9N$=sr6+xrXKxaMmRIAm{fJ25AQwQ{m3b|>WyDlPY zYime1dW>Q;Q@p!Szsj_R=R^@K7o}eSf+IrW^z>A%t*!Yf8q(Xt&#V zczCGzFgOk33aehPqi!^p2Xrx$ZsaI)Sh|t*%F0S0FP3|^*lxFx?#VnK9v;s0Lg!Uj z0Ow+f%3%?4Q$GCo%q`a>sfr{V9v&*PTv`2%MTTZ0ba^TwuCVy=p64xA%;iW9r6Nc; z++roQ$mAA@g^0Nv(}9TE`PewDtgN7naVZ{i;wm_ClcpwU6v-$1iJ1rVtyXL9d80`t z+Z|?1sSFo$Ii`Y71CixgNVljf<&hKQj%?6XRQTfB*x0~>gM-{(2$TPJn5oz6{*N;0 z2r;TmsRVE?EPkJ7qNXw&VMtizayjt-NvT$=NVf_Az`?!20umFN{vxpd)z~_|_^cr5-OI~B40(uv` zCx_-1N28G+uhQe(3(%;LA19}d2+#ANR4V0v;@S}(DG-1QE5!qOo*0#{l_kwQwyo7_ zST2`+H|xYzAao-;T?j#;g?vuBOMq|+f(y`ztKc9a@TwJA0immopnvNsQMpBPF^VIA zX%&{vrE*Kir_}ta)J~^^008^@`%Y+%#PHncXf*Pz*l09@QmIq|r4*3J9L1tuuj8bN zQxX=rLJH&o&Z{j-{7Fagm?SgbXf&|VXrN4800iT&ihRIPEGRQS8jbwNc-$qk^Yq*Y zAAH~+FZDwMgp%iZPFw{B5w*f1i>3?kWv+|vJLfm_6JT4u`|Qb4yE001%9| zOw0NTouM~1p({EsUc69rqsO>AjJvYkSuRH;vfZa{l=$Y&n~>1X&d!vJxg0*#YBjJ1 zk!rLkzVbW|-oAYcOG`^yVex*p00no8jv$m2B}>J-3i1ZTZ{ECtckkZ8yLazGy(Jc| z%Z(#FWVdEhH*0RqWMLuU#N`N}6NxNq9t;MmTCE~kGntkEIA7-P#N`NJYQ4_On%CCW zQ1+JKy}9T(H(GQAkPUcs-EU;|>0mHWD=RCZ9;r@T1!sMI-51mG@v$Ot@#XnkU|d+- zee#t5l#tL zE=0a)!=)k$4hf4VLkV(=R3*VDvUOYF$#s!VTm?qfYw2{weowR z#HidTBFV-ECZ-aXsg8%Za^*_s%zpj#S1Z5dEZE)MRkv>4vbNeaYM0nFwwx)gtgN8i z`5@67jM>as}x&$=}NhH*emw z{_|1ZDl2hS0Q9S7<8X9zq*|>OMjgwCt8&l2MTK0UjJs?j>&>_-0A{Nb2VDTqMpOWbc(?*z5|^fTtj$MvRrT`nAh#SCmrl{{4GjSRa1);n<{G6nPQW zqC>)>MYFY94NU^809?#srvZ0?^nWg3xA}lQkU>bAK9bA*Wf?TUc>!T1&6q&CJw8)j zq!dJ6pdWs#)xx*}>-YPL8tdx%NMyFOOwLVlE7fkdQO079`7=qHsNe4^5*E2co--?# z%g|^v(p{jzRZG8wcDs$d-e*y_4DR)Mp&!npM~|%koD>Jkt$D^ZQIT;Ly$`@ejaMbD zlt7eOHN{`k(ChWkri=IJ(IeIC^)SuPm^HFCi>HaWmqEl>ahd0NfkMMdn!$Y3A5Hs9 zw@Fw;)O3oCkYF}8HbS*o0KsKqyj%0h$%)c+AEd`9-p+hpW?Tk;k;wCBl~X~wX+0{3 zCZU;LxHQ)yr;!h-efRiLQ9% z3XZYx$!wldA|X*zUE1l4FVb*bZX5srkt0GG;PWoc0OvtG^`hsm56sSF{Q(^I!mSPo zqTOy|lEf-s@=yI!>EF(B6&PLmf&QOl6MFtSN|3i&E!RS+$e8kvGU3+`)$rALeePd-v{L-#mQx-FH@;zs@?zqJv4X;sYk(&Ye5{1_*S01K^WYW9YY@(cZjEl9S zMZRiCiY<@A0?2-~O;*I+)IegTQKqhRo##-t^+2K(5#jXoRLN#=)`%<4iXdsa^JKkjg@nTc_-3<-QC>uL zaFzoUx<1y3D=y;#-A7`8Qpc@7S9U5!j~;YLCeX;^^}@)x*{!P zPqMs2F_vz-7DNn`-cVVz6_$&H)oeB~&TM;}^@{Tz_Rst8XMt={N^oIO9|_+z(i6+e z%X67$Awh9rwOTEt+a&KP`&7&lU7w6afD20Qnj!Ji8JV9|47k-ILGg|$MOynfPk0{> zU0v63I1KH(7}cBJO1C&o2f{q@)mLAIKHS$|e;w0Ap$AbqC)E8fT5t&7g z3l|ozlpwf(@K}2}<>Xq?|(n*sLc>!CJ7)2=sJ3Bl0`0-;!_xyQ!pC5ksq1fsY$Qg#X=@Q=1 zWTr9KBsJu8qUCZq&`vS#@mx&&-?whv!rk3nHH&RjWS3_fd%1GtXq{*3qhc*CJo@*{ z#Fcb1S67ghbk6Sj_3NmVg2#^^E2>(h_=*HJ*{6vI32V|pNYu*nw4he*gsw$++-oO$ zbj>WF=fcpbzh18+zwwhLt4GI2bywk#uy%HKkd7rmr6DXC!x6n+54o`T{Une}l48@5 zbgM!70n_k<(M^RUNngwo(;$K1 zpJkf#Nm^O>D8}{a;(tHN#mk&orsDeOqmS_4fB#hg0H1yKS!hYS%+Pb+?s;A+`z&XP zNmu}3QA`@hXI-jIR?3w6;bM|5p3)D9sEySsJO}mXpMR!$F-cfN)QS;0N!u*cB+ynZ z(@xD~5y0z++UG}ZXUJWssXYO;W~cz1i|W#)OPOEQs3{!VtyEHMPdNabTb}*>eeHRY z;P}R1ygpu+TH^galu}S4YxU~YE5)r?7GyPrQv|MFy_(6jkyAE0bPG=p$>!7yt%_+>P2Qne=f&-;RSvG z7p^VtF{Z{O)^rwh%$F$F76m0+c_Oyc>G-8a&T=`lrBK~&H#Cxb_UxIjJh^(FCtWFp z;VhRUQ1wtMl>)*tO$G6UsWI-#?2H|`LW(4gtCXcUp&Iy4^0yfY#0e`NGMxYrPMFHd*d&dQ7gAh~c<37J0YnQ&R|O%9 z1_1!xzklz@z!Vi)W5*jblJ)DW0d1OP4NTRBLd@{E6ElQ@TMuawK8x?d_@c^>v(yTjauW zLbI1~4Ns&il=G0hZRPRt@$B}@tGjnGmjeKTWy?{kzLPBX zccVpzG5tUpd5+vvijL`YI=Hm7ak(U_0|3S^ zfPMP(sghd~n(paFynXu?Dz9I^R?ExFp}_60zy5Oma>0p{i6^T@?ocj*l}pg*vHksh zRiX!{?S<)>Ej&{`4N02K@gAzf;n05!K)-L30s#2rlTSja|12z*9GM~_{PWL0PR$A7 z!g~Jv`P{!h+U}XhTTh-mQ3038^BnY|*RNm4K6zbQq$Nbe&@N)@> z^769(N5+Yb#K{>aekta-tgfyi7a|EOP6Z}!WSi9SHID@@23F(0hE&XXdytV4$ZJygzdp~y d0mQ@vHByl)7#OP-y@>_MdAj