Add circle gaps to main line
This commit is contained in:
93
main.py
93
main.py
@@ -11,61 +11,64 @@ from world_maker.Skeleton import Skeleton, simplify_coordinates
|
|||||||
from world_maker.terraforming import remove_trees, smooth_terrain
|
from world_maker.terraforming import remove_trees, smooth_terrain
|
||||||
from world_maker.world_maker import world_maker
|
from world_maker.world_maker import world_maker
|
||||||
from networks.geometry.Point3D import Point3D
|
from networks.geometry.Point3D import Point3D
|
||||||
|
from networks.geometry.Point3D import Point3D
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
rectangle_house_mountain, rectangle_building, skeleton_highway, skeleton_mountain, road_grid = world_maker()
|
Road([Point3D(3903, 137, -142), Point3D(3948, 111, -148),
|
||||||
|
Point3D(3967, 112, -116), Point3D(4011, 112, -99)], 25)
|
||||||
|
# rectangle_house_mountain, rectangle_building, skeleton_highway, skeleton_mountain, road_grid = world_maker()
|
||||||
|
|
||||||
editor = Editor(buffering=True)
|
# editor = Editor(buffering=True)
|
||||||
buildArea = editor.getBuildArea()
|
# buildArea = editor.getBuildArea()
|
||||||
origin = ((buildArea.begin).x, (buildArea.begin).z)
|
# origin = ((buildArea.begin).x, (buildArea.begin).z)
|
||||||
|
|
||||||
remove_trees('./world_maker/data/heightmap.png', './world_maker/data/treemap.png',
|
# remove_trees('./world_maker/data/heightmap.png', './world_maker/data/treemap.png',
|
||||||
'./world_maker/data/smooth_sobel_watermap.png')
|
# './world_maker/data/smooth_sobel_watermap.png')
|
||||||
smooth_terrain('./world_maker/data/heightmap.png',
|
# smooth_terrain('./world_maker/data/heightmap.png',
|
||||||
'./world_maker/data/heightmap_smooth.png', './world_maker/data/smooth_sobel_watermap.png')
|
# './world_maker/data/heightmap_smooth.png', './world_maker/data/smooth_sobel_watermap.png')
|
||||||
|
|
||||||
set_roads(skeleton_mountain, origin)
|
# set_roads(skeleton_mountain, origin)
|
||||||
set_roads(skeleton_highway, origin)
|
# set_roads(skeleton_highway, origin)
|
||||||
# set_roads_grids(road_grid, origin)
|
# # set_roads_grids(road_grid, origin)
|
||||||
# roads.setRoads(skeleton_mountain)
|
# # roads.setRoads(skeleton_mountain)
|
||||||
# roads.setRoads(skeleton_highway)
|
# # roads.setRoads(skeleton_highway)
|
||||||
|
|
||||||
blocks = {
|
# blocks = {
|
||||||
"wall": "blackstone",
|
# "wall": "blackstone",
|
||||||
"roof": "blackstone",
|
# "roof": "blackstone",
|
||||||
"roof_slab": "blackstone_slab",
|
# "roof_slab": "blackstone_slab",
|
||||||
"door": "oak_door",
|
# "door": "oak_door",
|
||||||
"window": "glass_pane",
|
# "window": "glass_pane",
|
||||||
"entrance": "oak_door",
|
# "entrance": "oak_door",
|
||||||
"stairs": "quartz_stairs",
|
# "stairs": "quartz_stairs",
|
||||||
"stairs_slab": "quartz_slab",
|
# "stairs_slab": "quartz_slab",
|
||||||
"celling": "quartz_block",
|
# "celling": "quartz_block",
|
||||||
"floor": "quartz_block",
|
# "floor": "quartz_block",
|
||||||
"celling_slab": "quartz_slab",
|
# "celling_slab": "quartz_slab",
|
||||||
"garden_outline": "oak_leaves",
|
# "garden_outline": "oak_leaves",
|
||||||
"garden_floor": "grass_block"
|
# "garden_floor": "grass_block"
|
||||||
}
|
# }
|
||||||
|
|
||||||
entranceDirection = ["N", "S", "E", "W"]
|
# entranceDirection = ["N", "S", "E", "W"]
|
||||||
|
|
||||||
for houses in rectangle_building:
|
# for houses in rectangle_building:
|
||||||
start = (houses[0][0]+buildArea.begin[0], houses[0]
|
# start = (houses[0][0]+buildArea.begin[0], houses[0]
|
||||||
[1], houses[0][2]+buildArea.begin[2])
|
# [1], houses[0][2]+buildArea.begin[2])
|
||||||
end = (houses[1][0]+buildArea.begin[0], houses[1]
|
# end = (houses[1][0]+buildArea.begin[0], houses[1]
|
||||||
[1], houses[1][2]+buildArea.begin[2])
|
# [1], houses[1][2]+buildArea.begin[2])
|
||||||
house = House(editor, start, end,
|
# house = House(editor, start, end,
|
||||||
entranceDirection[random.randint(0, 3)], blocks)
|
# entranceDirection[random.randint(0, 3)], blocks)
|
||||||
house.build()
|
# house.build()
|
||||||
|
|
||||||
for houses in rectangle_house_mountain:
|
# for houses in rectangle_house_mountain:
|
||||||
start = (houses[0][0]+buildArea.begin[0], houses[0]
|
# start = (houses[0][0]+buildArea.begin[0], houses[0]
|
||||||
[1], houses[0][2]+buildArea.begin[2])
|
# [1], houses[0][2]+buildArea.begin[2])
|
||||||
end = (houses[1][0]+buildArea.begin[0], houses[1]
|
# end = (houses[1][0]+buildArea.begin[0], houses[1]
|
||||||
[1], houses[1][2]+buildArea.begin[2])
|
# [1], houses[1][2]+buildArea.begin[2])
|
||||||
house = House(editor, start, end,
|
# house = House(editor, start, end,
|
||||||
entranceDirection[random.randint(0, 3)], blocks)
|
# entranceDirection[random.randint(0, 3)], blocks)
|
||||||
house.build()
|
# house.build()
|
||||||
|
|
||||||
|
|
||||||
def set_roads_grids(road_grid: Road_grid, origin):
|
def set_roads_grids(road_grid: Road_grid, origin):
|
||||||
|
|||||||
@@ -120,6 +120,7 @@ class Road:
|
|||||||
# geometry.placeLine(editor, Point3D.insert_3d([double_point_b], 'y', [229])[
|
# geometry.placeLine(editor, Point3D.insert_3d([double_point_b], 'y', [229])[
|
||||||
# 0].coordinates, Point3D.insert_3d([self.polyline.centers[i]], 'y', [229])[0].coordinates, Block("red_concrete"))
|
# 0].coordinates, Point3D.insert_3d([self.polyline.centers[i]], 'y', [229])[0].coordinates, Block("red_concrete"))
|
||||||
|
|
||||||
|
circle_list = [[] for _ in range(len(circle))]
|
||||||
for j in range(len(circle)):
|
for j in range(len(circle)):
|
||||||
for k in range(len(circle[j])):
|
for k in range(len(circle[j])):
|
||||||
jj = j % 7
|
jj = j % 7
|
||||||
@@ -139,20 +140,48 @@ class Road:
|
|||||||
case 6:
|
case 6:
|
||||||
blob = 'purple_concrete'
|
blob = 'purple_concrete'
|
||||||
if circle[j][k].is_in_triangle(double_point_a, self.polyline.centers[i], double_point_b):
|
if circle[j][k].is_in_triangle(double_point_a, self.polyline.centers[i], double_point_b):
|
||||||
nearest = circle[j][k].nearest(
|
# nearest = circle[j][k].nearest(
|
||||||
Point3D.to_2d(self.polyline_total_line_output, removed_axis='y'), True)
|
# Point3D.to_2d(self.polyline_total_line_output, removed_axis='y'), True)
|
||||||
self.output_block.append(
|
# circle_list[j].append(
|
||||||
(Point3D.insert_3d([circle[j][k]], 'y', [
|
# (Point3D.insert_3d([circle[j][k]], 'y', [
|
||||||
self.polyline_total_line_output[nearest[0]].y])[0].coordinates, Block(blob)))
|
# self.polyline_total_line_output[nearest[0]].y])[0].coordinates, Block(blob)))
|
||||||
|
circle_list[j].append(circle[j][k])
|
||||||
|
|
||||||
for j in range(len(gaps)):
|
for j in range(len(gaps)):
|
||||||
for k in range(len(gaps[j])):
|
for k in range(len(gaps[j])):
|
||||||
if gaps[j][k].is_in_triangle(double_point_a, self.polyline.centers[i], double_point_b):
|
if gaps[j][k].is_in_triangle(double_point_a, self.polyline.centers[i], double_point_b):
|
||||||
nearest = gaps[j][k].nearest(
|
# nearest = gaps[j][k].nearest(
|
||||||
|
# Point3D.to_2d(self.polyline_total_line_output, removed_axis='y'), True)
|
||||||
|
# circle_list[j].append(
|
||||||
|
# (Point3D.insert_3d([gaps[j][k]], 'y', [
|
||||||
|
# self.polyline_total_line_output[nearest[0]].y])[0].coordinates, Block("white_concrete")))
|
||||||
|
circle_list[j].append(gaps[j][k])
|
||||||
|
|
||||||
|
for j in range(len(circle_list)):
|
||||||
|
circle_list[j] = circle_list[j][0].optimized_path(
|
||||||
|
circle_list[j])
|
||||||
|
jj = j % 7
|
||||||
|
match jj:
|
||||||
|
case 0:
|
||||||
|
blob = 'pink_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 k in range(len(circle_list[j])):
|
||||||
|
nearest = circle_list[j][k].nearest(
|
||||||
Point3D.to_2d(self.polyline_total_line_output, removed_axis='y'), True)
|
Point3D.to_2d(self.polyline_total_line_output, removed_axis='y'), True)
|
||||||
self.output_block.append(
|
self.output_block.append(
|
||||||
(Point3D.insert_3d([gaps[j][k]], 'y', [
|
(Point3D.insert_3d([circle_list[j][k]], 'y', [
|
||||||
self.polyline_total_line_output[nearest[0]].y])[0].coordinates, Block("white_concrete")))
|
self.polyline_total_line_output[nearest[0]].y])[0].coordinates, Block(blob)))
|
||||||
|
|
||||||
def _projection_gaussian(self):
|
def _projection_gaussian(self):
|
||||||
nearest_points_to_reference = []
|
nearest_points_to_reference = []
|
||||||
|
|||||||
Reference in New Issue
Block a user