Add line object

This commit is contained in:
2024-05-26 18:37:33 +02:00
parent 0d4bd5906b
commit 2e66a539cf
7 changed files with 166 additions and 67 deletions

131
main.py
View File

@@ -1,25 +1,26 @@
import networks.lines.Line as Line
from gdpc import Editor, Block, geometry
import networks.Curve as curve
import networks.CurveSurface as CurveSurface
import networks.Segment as segment
import networks.geometry.curve as curve
import networks.geometry.CurveSurface as CurveSurface
import networks.geometry.segment as segment
import numpy as np
import json
from buildings.Building import Building
import random
editor = Editor(buffering=True)
# editor = Editor(buffering=True)
f = open('buildings\shapes.json')
shapes = json.load(f)
# f = open('buildings\shapes.json')
# shapes = json.load(f)
# F = Foundations((0,0), (20,20), shapes[0]['matrice'])
# F.polygon.fill_polygon(editor, "stone", -60)
geometry.placeCuboid(editor, (-10, -60, -10), (85, -55, 85), Block("air"))
B = Building((0, 0), (75, 75), shapes[7]['matrice'])
B.foundations.polygon.fill_vertice(editor, "pink_wool", -60)
for collumn in B.foundations.collumns:
collumn.fill(editor, "white_concrete", -60, -55)
B.foundations.polygon.fill_polygon(editor, "white_concrete", -60)
# # F = Foundations((0,0), (20,20), shapes[0]['matrice'])
# # F.polygon.fill_polygon(editor, "stone", -60)
# geometry.placeCuboid(editor, (-10, -60, -10), (85, -55, 85), Block("air"))
# B = Building((0, 0), (75, 75), shapes[7]['matrice'])
# B.foundations.polygon.fill_vertice(editor, "pink_wool", -60)
# for collumn in B.foundations.collumns:
# collumn.fill(editor, "white_concrete", -60, -55)
# B.foundations.polygon.fill_polygon(editor, "white_concrete", -60)
y = 25
block_list = ["blue_concrete", "red_concrete", "green_concrete",
@@ -28,63 +29,71 @@ block_list = ["blue_concrete", "red_concrete", "green_concrete",
# Over the hill
# coordinates = [(-854, 87+y, -210), (-770, 99+y, -207), (-736, 85+y, -184)]
# Along the river
# coordinates = [(-456, 69, -283), (-588, 106, -374), (-720, 71, -384), (-775, 67, -289), (-822, 84, -265), (-868, 77, -188), (-927, 96, -127),
# (-926, 65, -29), (-906, 98, 42), (-902, 137, 2), (-909, 115, -62), (-924, 76, -6), (-985, 76, 37), (-1043, 76, 28), (-1102, 66, 63)]
# # Along the river
# # coordinates = [(-456, 69, -283), (-588, 106, -374), (-720, 71, -384), (-775, 67, -289), (-822, 84, -265), (-868, 77, -188), (-927, 96, -127),
# # (-926, 65, -29), (-906, 98, 42), (-902, 137, 2), (-909, 115, -62), (-924, 76, -6), (-985, 76, 37), (-1043, 76, 28), (-1102, 66, 63)]
# Though the loop
# coordinates = [(-1005, 113+y, -19), (-896, 113+y, 7),
# (-807, 76+y, 54), (-738, 76+y, -10), (-678, 76+y, -86)]
# # Though the loop
# # coordinates = [(-1005, 113+y, -19), (-896, 113+y, 7),
# # (-807, 76+y, 54), (-738, 76+y, -10), (-678, 76+y, -86)]
# Second zone
coordinates = [(-805, 78, 128), (-881, 91, 104), (-950, 119, 69), (-1005, 114, 58), (-1052, 86, 30),
(-1075, 83, 40), (-1104, 77, 63), (-1161, 69, 157), (-1144, 62, 226), (-1189, 76, 265), (-1210, 79, 329)]
# # Second zone
# coordinates = [(-805, 78, 128), (-881, 91, 104), (-950, 119, 69), (-1005, 114, 58), (-1052, 86, 30),
# (-1075, 83, 40), (-1104, 77, 63), (-1161, 69, 157), (-1144, 62, 226), (-1189, 76, 265), (-1210, 79, 329)]
resolution, distance = curve.resolution_distance(coordinates, 6)
# resolution, distance = curve.resolution_distance(coordinates, 6)
curve_points = curve.curve(coordinates, resolution)
curve_surface = CurveSurface.CurveSurface(coordinates)
curve_surface.compute_curvature()
# curve_points = curve.curve(coordinates, resolution)
# curve_surface = CurveSurface.CurveSurface(coordinates)
# curve_surface.compute_curvature()
curvature = []
for i in range(len(curve_surface.curvature)):
curvature.append((0, 1, 0))
# curvature = []
# for i in range(len(curve_surface.curvature)):
# curvature.append((0, 1, 0))
# Perpendicular
curve_surface.compute_surface_perpendicular(10, curvature)
for i in range(len(curve_surface.surface)):
for j in range(len(curve_surface.surface[i])):
# block = random.choice(block_list)
for k in range(len(curve_surface.surface[i][j])):
if k-16 < len(block_list) and k-16 >= 0:
editor.placeBlock(
curve_surface.surface[i][j][k], Block(block_list[k-16]))
else:
editor.placeBlock(
curve_surface.surface[i][j][k], Block("stone"))
# # Perpendicular
# curve_surface.compute_surface_perpendicular(10, curvature)
# for i in range(len(curve_surface.surface)):
# for j in range(len(curve_surface.surface[i])):
# # block = random.choice(block_list)
# for k in range(len(curve_surface.surface[i][j])):
# if k-16 < len(block_list) and k-16 >= 0:
# editor.placeBlock(
# curve_surface.surface[i][j][k], Block(block_list[k-16]))
# else:
# editor.placeBlock(
# curve_surface.surface[i][j][k], Block("stone"))
offset = curve.offset(curve_surface.curve, -9, curvature)
for i in range(len(offset)-1):
line = segment.discrete_segment(offset[i], offset[i+1])
for coordinate in line:
editor.placeBlock(coordinate, Block("white_concrete"))
# offset = curve.offset(curve_surface.curve, -9, curvature)
# for i in range(len(offset)-1):
# line = segment.discrete_segment(offset[i], offset[i+1])
# for coordinate in line:
# editor.placeBlock(coordinate, Block("white_concrete"))
offset = curve.offset(curve_surface.curve, 9, curvature)
for i in range(len(offset)-1):
line = segment.discrete_segment(offset[i], offset[i+1])
for coordinate in line:
editor.placeBlock(coordinate, Block("white_concrete"))
# offset = curve.offset(curve_surface.curve, 9, curvature)
# for i in range(len(offset)-1):
# line = segment.discrete_segment(offset[i], offset[i+1])
# for coordinate in line:
# editor.placeBlock(coordinate, Block("white_concrete"))
# for coordinate in curve_surface.surface:
# editor.placeBlock(coordinate, Block("black_concrete"))
# # for coordinate in curve_surface.surface:
# # editor.placeBlock(coordinate, Block("black_concrete"))
# for coordinate in curve_surface.curve:
# editor.placeBlock(coordinate, Block("red_concrete"))
# # for coordinate in curve_surface.curve:
# # editor.placeBlock(coordinate, Block("red_concrete"))
# # Parallel
# curve_surface.compute_surface_parallel(0, 10, 8, curvature)
# # # Parallel
# # curve_surface.compute_surface_parallel(0, 10, 8, curvature)
# for current_range in range(len(curve_surface.left_side)):
# for coordinate in curve_surface.left_side[current_range]:
# editor.placeBlock(coordinate, Block("yellow_concrete"))
# # for current_range in range(len(curve_surface.left_side)):
# # for coordinate in curve_surface.left_side[current_range]:
# # editor.placeBlock(coordinate, Block("yellow_concrete"))
coordinates = [(0, 0, 0), (0, 10, 0), (0, 20, 0)]
with open('networks/lines/line.json') as f:
lines_type = json.load(f)
l = Line.Line(coordinates, lines_type.get('solid_white'))
print(l.get_surface())