mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-20 05:21:38 +02:00
refactor: use new maze functions/modules
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
use <bend.scad>;
|
use <bend.scad>;
|
||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_square_walls.scad>;
|
use <maze/mz_squarewalls.scad>;
|
||||||
|
|
||||||
radius = 30;
|
radius = 30;
|
||||||
height = 60;
|
height = 60;
|
||||||
@@ -35,12 +35,12 @@ module cylinder_maze() {
|
|||||||
maze_rows = round(height / cell_width);
|
maze_rows = round(height / cell_width);
|
||||||
maze_columns = round(2 * 3.14159 * radius / cell_width);
|
maze_columns = round(2 * 3.14159 * radius / cell_width);
|
||||||
|
|
||||||
maze_cells = mz_square_cells(
|
maze_cells = mz_square(
|
||||||
maze_rows, maze_columns,
|
maze_rows, maze_columns,
|
||||||
x_wrapping = true
|
x_wrapping = true
|
||||||
);
|
);
|
||||||
|
|
||||||
walls = mz_square_walls(maze_cells, maze_rows, maze_columns, cell_width, left_border = false);
|
walls = mz_squarewalls(maze_cells, cell_width, left_border = false);
|
||||||
|
|
||||||
leng_circumference = cell_width * maze_columns + wall_thickness;
|
leng_circumference = cell_width * maze_columns + wall_thickness;
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
use <arc.scad>;
|
use <arc.scad>;
|
||||||
use <heart_maze.scad>;
|
use <heart_maze.scad>;
|
||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
|
|
||||||
names = ["Justin", "Monica"];
|
names = ["Justin", "Monica"];
|
||||||
font_name = "Arial Black";
|
font_name = "Arial Black";
|
||||||
@@ -31,9 +31,7 @@ module heart_base(name, font_name, font_size, radius, ring_thickness, tip_r_of_h
|
|||||||
}
|
}
|
||||||
|
|
||||||
module heart2heart_maze(names, font_name, font_size, radius_of_heart, tip_r_of_heart, wall_thickness, ccells, levels, spacing) {
|
module heart2heart_maze(names, font_name, font_size, radius_of_heart, tip_r_of_heart, wall_thickness, ccells, levels, spacing) {
|
||||||
cells = mz_square_cells(
|
cells = mz_square(ccells, levels, y_wrapping = true);
|
||||||
ccells, levels, y_wrapping = true
|
|
||||||
);
|
|
||||||
|
|
||||||
translate([0, 0, wall_thickness])
|
translate([0, 0, wall_thickness])
|
||||||
linear_extrude(wall_thickness)
|
linear_extrude(wall_thickness)
|
||||||
|
@@ -2,7 +2,7 @@ use <line2d.scad>;
|
|||||||
use <hollow_out.scad>;
|
use <hollow_out.scad>;
|
||||||
use <ellipse_extrude.scad>;
|
use <ellipse_extrude.scad>;
|
||||||
use <arc.scad>;
|
use <arc.scad>;
|
||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_square_get.scad>;
|
use <maze/mz_square_get.scad>;
|
||||||
|
|
||||||
radius_of_heart = 12;
|
radius_of_heart = 12;
|
||||||
@@ -78,8 +78,7 @@ module heart_maze(cells, radius, ccells, levels, thickness = 1) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for(i = [0:len(cells) - 1]) {
|
for(row = cells, cell = row) {
|
||||||
cell = cells[i];
|
|
||||||
cr = get_x(cell) + 1;
|
cr = get_x(cell) + 1;
|
||||||
cc = get_y(cell);
|
cc = get_y(cell);
|
||||||
|
|
||||||
@@ -93,8 +92,7 @@ module heart_maze(cells, radius, ccells, levels, thickness = 1) {
|
|||||||
|
|
||||||
render() union() {
|
render() union() {
|
||||||
// road to the next level
|
// road to the next level
|
||||||
for(i = [0:len(cells) - 1]) {
|
for(row = cells, cell = row) {
|
||||||
cell = cells[i];
|
|
||||||
cr = get_x(cell) + 1;
|
cr = get_x(cell) + 1;
|
||||||
cc = get_y(cell);
|
cc = get_y(cell);
|
||||||
|
|
||||||
@@ -106,9 +104,7 @@ module heart_maze(cells, radius, ccells, levels, thickness = 1) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cells = mz_square_cells(
|
cells = mz_square(ccells, levels, y_wrapping = true);
|
||||||
ccells, levels, y_wrapping = true
|
|
||||||
);
|
|
||||||
|
|
||||||
intersection() {
|
intersection() {
|
||||||
union() {
|
union() {
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_square_walls.scad>;
|
use <maze/mz_squarewalls.scad>;
|
||||||
use <maze/mz_square_initialize.scad>;
|
use <maze/mz_square_initialize.scad>;
|
||||||
use <voxel/vx_contour.scad>;
|
use <voxel/vx_contour.scad>;
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ module maze_masking(start, mask, cell_width, wall_thickness, wall_height, base_h
|
|||||||
rows = len(mask);
|
rows = len(mask);
|
||||||
columns = len(mask[0]);
|
columns = len(mask[0]);
|
||||||
|
|
||||||
cells = mz_square_cells(
|
cells = mz_square(
|
||||||
rows, columns, start,
|
rows, columns, start,
|
||||||
mz_square_initialize(mask = mask)
|
mz_square_initialize(mask = mask)
|
||||||
);
|
);
|
||||||
@@ -41,7 +41,7 @@ module maze_masking(start, mask, cell_width, wall_thickness, wall_height, base_h
|
|||||||
[x, y]
|
[x, y]
|
||||||
], sorted = true) : [];
|
], sorted = true) : [];
|
||||||
|
|
||||||
walls = mz_square_walls(cells, rows, columns, cell_width);
|
walls = mz_squarewalls(cells, cell_width);
|
||||||
|
|
||||||
color("gray")
|
color("gray")
|
||||||
linear_extrude(wall_height)
|
linear_extrude(wall_height)
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
use <maze/mz_theta_cells.scad>;
|
use <maze/mz_theta.scad>;
|
||||||
use <util/find_index.scad>;
|
use <util/find_index.scad>;
|
||||||
use <arc.scad>;
|
use <arc.scad>;
|
||||||
use <polyline2d.scad>;
|
use <polyline2d.scad>;
|
||||||
|
|
||||||
$fn = 48;
|
$fn = 48;
|
||||||
|
|
||||||
rows = 6;
|
rings = 6;
|
||||||
beginning_number = 5;
|
beginning_number = 5;
|
||||||
cell_width = 2;
|
cell_width = 2;
|
||||||
|
|
||||||
@@ -23,14 +23,14 @@ module maze_tower() {
|
|||||||
|
|
||||||
function vt_from_angle(theta, r) = [r * cos(theta), r * sin(theta)];
|
function vt_from_angle(theta, r) = [r * cos(theta), r * sin(theta)];
|
||||||
|
|
||||||
mz = mz_theta_cells(rows, beginning_number);
|
mz = mz_theta(rings, beginning_number);
|
||||||
mz_leng = len(mz);
|
mz_leng = len(mz);
|
||||||
outThetaStep = 360 / len(mz[rows - 1]);
|
outThetaStep = 360 / len(mz[rings - 1]);
|
||||||
r = cell_width * (rows + 1);
|
r = cell_width * (rings + 1);
|
||||||
|
|
||||||
module maze() {
|
module maze() {
|
||||||
for(rows = mz) {
|
for(rings = mz) {
|
||||||
for(cell = rows) {
|
for(cell = rings) {
|
||||||
ri = cell[0];
|
ri = cell[0];
|
||||||
ci = cell[1];
|
ci = cell[1];
|
||||||
type = cell[2];
|
type = cell[2];
|
||||||
@@ -68,8 +68,8 @@ module maze_tower() {
|
|||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
for(i = [0:mz_leng - 1]) {
|
for(i = [0:mz_leng - 1]) {
|
||||||
rows = mz[i];
|
rings = mz[i];
|
||||||
ir = (rows[i][0] + 1) * cell_width;
|
ir = (rings[i][0] + 1) * cell_width;
|
||||||
linear_extrude((mz_leng - i + 1) * wall_height)
|
linear_extrude((mz_leng - i + 1) * wall_height)
|
||||||
circle(ir + wall_thickness * 0.4999);
|
circle(ir + wall_thickness * 0.4999);
|
||||||
}
|
}
|
||||||
@@ -80,9 +80,9 @@ module maze_tower() {
|
|||||||
linear_extrude(wall_height * (mz_leng + 2))
|
linear_extrude(wall_height * (mz_leng + 2))
|
||||||
maze();
|
maze();
|
||||||
}
|
}
|
||||||
last_rows = mz[mz_leng - 1];
|
last_rings = mz[mz_leng - 1];
|
||||||
i = find_index(last_rows, function(cell) cell[2] == CCW_WALL || cell[2] == INWARD_CCW_WALL);
|
i = find_index(last_rings, function(cell) cell[2] == CCW_WALL || cell[2] == INWARD_CCW_WALL);
|
||||||
theta1 = outThetaStep * last_rows[i][1];
|
theta1 = outThetaStep * last_rings[i][1];
|
||||||
linear_extrude(wall_height)
|
linear_extrude(wall_height)
|
||||||
arc(r * 0.9999, [theta1 + outThetaStep * 0.1, theta1 + outThetaStep * 0.75], wall_thickness);
|
arc(r * 0.9999, [theta1 + outThetaStep * 0.1, theta1 + outThetaStep * 0.75], wall_thickness);
|
||||||
}
|
}
|
||||||
@@ -91,7 +91,7 @@ module maze_tower() {
|
|||||||
num_stairs = 4;
|
num_stairs = 4;
|
||||||
stair_thickness = wall_thickness / 3;
|
stair_thickness = wall_thickness / 3;
|
||||||
or = r + half_wall_thickness;
|
or = r + half_wall_thickness;
|
||||||
for(ri = [0:2:rows * 2]) {
|
for(ri = [0:2:rings * 2]) {
|
||||||
for(si = [0:2]) {
|
for(si = [0:2]) {
|
||||||
r = or - stair_thickness * si - wall_thickness * ri;
|
r = or - stair_thickness * si - wall_thickness * ri;
|
||||||
translate([0, 0, wall_height * ri / 2 + wall_height / num_stairs * (si + 1)])
|
translate([0, 0, wall_height * ri / 2 + wall_height / num_stairs * (si + 1)])
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_squarewalls.scad>;
|
use <maze/mz_squarewalls.scad>;
|
||||||
use <maze/mz_square_initialize.scad>;
|
use <maze/mz_square_initialize.scad>;
|
||||||
use <polyline_join.scad>;
|
use <polyline_join.scad>;
|
||||||
@@ -15,7 +15,7 @@ module maze_yinyan(cell_width, wall_thickness) {
|
|||||||
|
|
||||||
module maze(mask, start, cell_width, wall_thickness, seed) {
|
module maze(mask, start, cell_width, wall_thickness, seed) {
|
||||||
init_cells = mz_square_initialize(mask = mask);
|
init_cells = mz_square_initialize(mask = mask);
|
||||||
cells = mz_square_cells(start = start, init_cells = init_cells, seed = seed);
|
cells = mz_square(start = start, init_cells = init_cells, seed = seed);
|
||||||
walls = mz_squarewalls(cells, cell_width, false, false);
|
walls = mz_squarewalls(cells, cell_width, false, false);
|
||||||
|
|
||||||
for(wall = walls) {
|
for(wall = walls) {
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
use <polyline_join.scad>;
|
use <polyline_join.scad>;
|
||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_square_walls.scad>;
|
use <maze/mz_squarewalls.scad>;
|
||||||
use <ptf/ptf_ring.scad>;
|
use <ptf/ptf_ring.scad>;
|
||||||
|
|
||||||
rows = 48;
|
rows = 48;
|
||||||
@@ -14,12 +14,8 @@ leng = rows * cell_width;
|
|||||||
radius = 0.5 * leng / PI;
|
radius = 0.5 * leng / PI;
|
||||||
a_step = 360 / leng;
|
a_step = 360 / leng;
|
||||||
|
|
||||||
cells = mz_square_cells(
|
cells = mz_square(rows, columns, y_wrapping = true);
|
||||||
rows, columns,
|
walls = mz_squarewalls(cells, cell_width, bottom_border = false);
|
||||||
y_wrapping = true
|
|
||||||
);
|
|
||||||
|
|
||||||
walls = mz_square_walls(cells, rows, columns, cell_width, bottom_border = false);
|
|
||||||
|
|
||||||
size = [columns * cell_width, rows * cell_width];
|
size = [columns * cell_width, rows * cell_width];
|
||||||
for(wall_pts = walls) {
|
for(wall_pts = walls) {
|
||||||
|
@@ -1,18 +1,16 @@
|
|||||||
use <polyline_join.scad>;
|
use <polyline_join.scad>;
|
||||||
use <util/rand.scad>;
|
use <util/rand.scad>;
|
||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_square_walls.scad>;
|
use <maze/mz_squarewalls.scad>;
|
||||||
use <ptf/ptf_circle.scad>;
|
use <ptf/ptf_circle.scad>;
|
||||||
use <noise/nz_perlin2.scad>;
|
use <noise/nz_perlin2.scad>;
|
||||||
|
|
||||||
module noisy_circle_maze(r_cells, cell_width, wall_thickness, origin_offset, noisy_factor) {
|
module noisy_circle_maze(r_cells, cell_width, wall_thickness, origin_offset, noisy_factor) {
|
||||||
double_r_cells = r_cells * 2;
|
double_r_cells = r_cells * 2;
|
||||||
cells = mz_square_cells(
|
cells = mz_square(double_r_cells, double_r_cells);
|
||||||
double_r_cells, double_r_cells
|
|
||||||
);
|
|
||||||
|
|
||||||
width = double_r_cells * cell_width;
|
width = double_r_cells * cell_width;
|
||||||
walls = mz_square_walls(cells, double_r_cells, double_r_cells, cell_width);
|
walls = mz_squarewalls(cells, cell_width);
|
||||||
|
|
||||||
half_width = width / 2;
|
half_width = width / 2;
|
||||||
rect_size = is_undef(origin_offset) ? [width, width] : [width, width] - origin_offset * 2;
|
rect_size = is_undef(origin_offset) ? [width, width] : [width, width] - origin_offset * 2;
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
use <polyline2d.scad>;
|
use <polyline2d.scad>;
|
||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_hex_walls.scad>;
|
use <maze/mz_hexwalls.scad>;
|
||||||
|
|
||||||
columns = 10;
|
columns = 10;
|
||||||
cell_radius = 2;
|
cell_radius = 2;
|
||||||
@@ -30,9 +30,8 @@ module pyramid_hex_maze(columns, cell_radius, wall_thickness) {
|
|||||||
|
|
||||||
pyramid_height = square_w / sqrt(2);
|
pyramid_height = square_w / sqrt(2);
|
||||||
|
|
||||||
cells = mz_square_cells(rows, columns);
|
cells = mz_square(rows, columns);
|
||||||
|
walls = mz_hexwalls(cells, cell_radius, wall_thickness);
|
||||||
walls = mz_hex_walls(cells, rows, columns, cell_radius, wall_thickness);
|
|
||||||
|
|
||||||
intersection() {
|
intersection() {
|
||||||
linear_extrude(pyramid_height)
|
linear_extrude(pyramid_height)
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
use <line2d.scad>;
|
use <line2d.scad>;
|
||||||
use <hollow_out.scad>;
|
use <hollow_out.scad>;
|
||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_square_get.scad>;
|
use <maze/mz_square_get.scad>;
|
||||||
|
|
||||||
// only for creating a small maze
|
// only for creating a small maze
|
||||||
@@ -49,9 +49,7 @@ module regular_polygon_maze(radius, ccells, levels, thickness = 1, sides) {
|
|||||||
arc_angle = 360 / ccells;
|
arc_angle = 360 / ccells;
|
||||||
r = radius / (levels + 1);
|
r = radius / (levels + 1);
|
||||||
|
|
||||||
cells = mz_square_cells(
|
cells = mz_square(ccells, levels, y_wrapping = true);
|
||||||
ccells, levels, y_wrapping = true
|
|
||||||
);
|
|
||||||
|
|
||||||
difference() {
|
difference() {
|
||||||
render() union() {
|
render() union() {
|
||||||
@@ -60,8 +58,7 @@ module regular_polygon_maze(radius, ccells, levels, thickness = 1, sides) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for(i = [0:len(cells) - 1]) {
|
for(row = cells, cell = row) {
|
||||||
cell = cells[i];
|
|
||||||
cr = get_x(cell) + 1;
|
cr = get_x(cell) + 1;
|
||||||
cc = get_y(cell);
|
cc = get_y(cell);
|
||||||
|
|
||||||
@@ -78,8 +75,7 @@ module regular_polygon_maze(radius, ccells, levels, thickness = 1, sides) {
|
|||||||
// ring_regular_polygon_sector(r, arc_angle / 1.975 , thickness, r / 3, sides);
|
// ring_regular_polygon_sector(r, arc_angle / 1.975 , thickness, r / 3, sides);
|
||||||
|
|
||||||
// road to the next level
|
// road to the next level
|
||||||
for(i = [0:len(cells) - 1]) {
|
for(row = cells, cell = row) {
|
||||||
cell = cells[i];
|
|
||||||
cr = get_x(cell) + 1;
|
cr = get_x(cell) + 1;
|
||||||
cc = get_y(cell);
|
cc = get_y(cell);
|
||||||
|
|
||||||
|
@@ -1,16 +1,16 @@
|
|||||||
use <along_with.scad>;
|
use <along_with.scad>;
|
||||||
use <polyhedron_hull.scad>;
|
use <polyhedron_hull.scad>;
|
||||||
use <maze/mz_theta_cells.scad>;
|
use <maze/mz_theta.scad>;
|
||||||
use <maze/mz_theta_get.scad>;
|
use <maze/mz_theta_get.scad>;
|
||||||
|
|
||||||
rows = 4;
|
rings = 4;
|
||||||
begining_columns = 6;
|
begining_columns = 6;
|
||||||
cell_width = 12;
|
cell_width = 12;
|
||||||
rock_size = 4;
|
rock_size = 4;
|
||||||
height_scale = 3;
|
height_scale = 3;
|
||||||
flat_base = false;
|
flat_base = false;
|
||||||
|
|
||||||
rock_theta_maze(rows, begining_columns, cell_width, rock_size, height_scale, flat_base);
|
rock_theta_maze(rings, begining_columns, cell_width, rock_size, height_scale, flat_base);
|
||||||
|
|
||||||
module rock(width = 1) {
|
module rock(width = 1) {
|
||||||
n = 15 * rands(1, 1.25, 1)[0];
|
n = 15 * rands(1, 1.25, 1)[0];
|
||||||
@@ -36,16 +36,16 @@ module rock_wall(p1, p2, size) {
|
|||||||
rock(size * 0.875);
|
rock(size * 0.875);
|
||||||
}
|
}
|
||||||
|
|
||||||
module rock_theta_maze(rows, begining_columns, cell_width, rock_size, height_scale, flat_base) {
|
module rock_theta_maze(rings, begining_columns, cell_width, rock_size, height_scale, flat_base) {
|
||||||
function vt_from_angle(theta, r) = [r * cos(theta), r * sin(theta)];
|
function vt_from_angle(theta, r) = [r * cos(theta), r * sin(theta)];
|
||||||
|
|
||||||
maze = mz_theta_cells(rows, begining_columns);
|
maze = mz_theta(rings, begining_columns);
|
||||||
|
|
||||||
scale([1, 1, height_scale])
|
scale([1, 1, height_scale])
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
for(rows = maze) {
|
for(rings = maze) {
|
||||||
for(cell = rows) {
|
for(cell = rings) {
|
||||||
|
|
||||||
ri = mz_theta_get(cell, "r");
|
ri = mz_theta_get(cell, "r");
|
||||||
ci = mz_theta_get(cell, "c");
|
ci = mz_theta_get(cell, "c");
|
||||||
@@ -72,8 +72,8 @@ module rock_theta_maze(rows, begining_columns, cell_width, rock_size, height_sca
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
thetaStep = 360 / len(maze[rows - 1]);
|
thetaStep = 360 / len(maze[rings - 1]);
|
||||||
r = cell_width * (rows + 1);
|
r = cell_width * (rings + 1);
|
||||||
for(theta = [0:thetaStep:360 - thetaStep * 2]) {
|
for(theta = [0:thetaStep:360 - thetaStep * 2]) {
|
||||||
vt1 = vt_from_angle(theta, r);
|
vt1 = vt_from_angle(theta, r);
|
||||||
vt2 = vt_from_angle(theta + thetaStep, r);
|
vt2 = vt_from_angle(theta + thetaStep, r);
|
||||||
@@ -81,8 +81,8 @@ module rock_theta_maze(rows, begining_columns, cell_width, rock_size, height_sca
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(flat_base) {
|
if(flat_base) {
|
||||||
translate([0, 0, -cell_width * rows * 2])
|
translate([0, 0, -cell_width * rings * 2])
|
||||||
cube(cell_width * rows * 4, center = true);
|
cube(cell_width * rings * 4, center = true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,6 +1,6 @@
|
|||||||
use <matrix/m_rotation.scad>;
|
use <matrix/m_rotation.scad>;
|
||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_square_walls.scad>;
|
use <maze/mz_squarewalls.scad>;
|
||||||
use <ptf/ptf_sphere.scad>;
|
use <ptf/ptf_sphere.scad>;
|
||||||
|
|
||||||
r = 10;
|
r = 10;
|
||||||
@@ -51,15 +51,12 @@ module sphere_maze() {
|
|||||||
|
|
||||||
|
|
||||||
size = [rows * cell_width, columns * cell_width + pole_offset * 2];
|
size = [rows * cell_width, columns * cell_width + pole_offset * 2];
|
||||||
cells = mz_square_cells(
|
cells = mz_square(rows, columns, y_wrapping = true);
|
||||||
rows, columns,
|
|
||||||
y_wrapping = true
|
|
||||||
);
|
|
||||||
|
|
||||||
p_offset = [cell_width * rows, pole_offset, 0];
|
p_offset = [cell_width * rows, pole_offset, 0];
|
||||||
mr = m_rotation(90);
|
mr = m_rotation(90);
|
||||||
|
|
||||||
walls = mz_square_walls(cells, rows, columns, cell_width, bottom_border = false);
|
walls = mz_squarewalls(cells, cell_width, bottom_border = false);
|
||||||
for(wall_pts = walls) {
|
for(wall_pts = walls) {
|
||||||
rxpts = [
|
rxpts = [
|
||||||
for(p = wall_pts)
|
for(p = wall_pts)
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
use <archimedean_spiral.scad>;
|
use <archimedean_spiral.scad>;
|
||||||
use <polyline_join.scad>;
|
use <polyline_join.scad>;
|
||||||
|
|
||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_square_walls.scad>;
|
use <maze/mz_squarewalls.scad>;
|
||||||
|
|
||||||
rows = 8;
|
rows = 8;
|
||||||
columns = 50;
|
columns = 50;
|
||||||
@@ -23,9 +23,9 @@ module spiral_maze() {
|
|||||||
pts2d = [for(pa = points_angles) pa[0]];
|
pts2d = [for(pa = points_angles) pa[0]];
|
||||||
pts3d = [for(p = pts2d) [p[0], 0, p[1]]];
|
pts3d = [for(p = pts2d) [p[0], 0, p[1]]];
|
||||||
|
|
||||||
walls = mz_square_walls(
|
walls = mz_squarewalls(
|
||||||
mz_square_cells(rows, columns),
|
mz_square(rows, columns),
|
||||||
rows, columns, cell_width
|
cell_width
|
||||||
);
|
);
|
||||||
|
|
||||||
half_thickness = wall_thickness / 2;
|
half_thickness = wall_thickness / 2;
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
use <polyline2d.scad>;
|
use <polyline2d.scad>;
|
||||||
use <stereographic_extrude.scad>;
|
use <stereographic_extrude.scad>;
|
||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_hex_walls.scad>;
|
use <maze/mz_hexwalls.scad>;
|
||||||
|
|
||||||
columns = 10;
|
columns = 10;
|
||||||
cell_radius = 20;
|
cell_radius = 20;
|
||||||
@@ -24,11 +24,9 @@ module hex_maze_stereographic_projection(columns, cell_radius, wall_thickness, f
|
|||||||
pyramid_height = square_w / sqrt(2);
|
pyramid_height = square_w / sqrt(2);
|
||||||
|
|
||||||
// create a maze
|
// create a maze
|
||||||
cells = mz_square_cells(
|
cells = mz_square(rows, columns);
|
||||||
rows, columns
|
|
||||||
);
|
|
||||||
|
|
||||||
walls = mz_hex_walls(cells, rows, columns, cell_radius, wall_thickness);
|
walls = mz_hexwalls(cells, cell_radius, wall_thickness);
|
||||||
|
|
||||||
stereographic_extrude(square_w, $fn = fn)
|
stereographic_extrude(square_w, $fn = fn)
|
||||||
translate([grid_w - square_w / 2, grid_h - square_w / 2, 0])
|
translate([grid_w - square_w / 2, grid_h - square_w / 2, 0])
|
||||||
|
@@ -1,25 +1,25 @@
|
|||||||
use <maze/mz_theta_cells.scad>;
|
use <maze/mz_theta.scad>;
|
||||||
use <maze/mz_theta_get.scad>;
|
use <maze/mz_theta_get.scad>;
|
||||||
use <polyline_join.scad>;
|
use <polyline_join.scad>;
|
||||||
|
|
||||||
rows = 5;
|
rings = 5;
|
||||||
beginning_number = 8;
|
beginning_number = 8;
|
||||||
cell_width = 10;
|
cell_width = 10;
|
||||||
wall_thickness = 2;
|
wall_thickness = 2;
|
||||||
wall_height = 5;
|
wall_height = 5;
|
||||||
|
|
||||||
theta_maze(rows, beginning_number, cell_width, wall_thickness, wall_height);
|
theta_maze(rings, beginning_number, cell_width, wall_thickness, wall_height);
|
||||||
|
|
||||||
module theta_maze(rows, beginning_number, cell_width, wall_thickness, wall_height) {
|
module theta_maze(rings, beginning_number, cell_width, wall_thickness, wall_height) {
|
||||||
|
|
||||||
function vt_from_angle(theta, r) = [r * cos(theta), r * sin(theta)];
|
function vt_from_angle(theta, r) = [r * cos(theta), r * sin(theta)];
|
||||||
|
|
||||||
maze = mz_theta_cells(rows, beginning_number);
|
maze = mz_theta(rings, beginning_number);
|
||||||
|
|
||||||
half_wall_thickness = wall_thickness / 2;
|
half_wall_thickness = wall_thickness / 2;
|
||||||
linear_extrude(wall_height) {
|
linear_extrude(wall_height) {
|
||||||
for(rows = maze) {
|
for(rings = maze) {
|
||||||
for(cell = rows) {
|
for(cell = rings) {
|
||||||
ri = mz_theta_get(cell, "r");
|
ri = mz_theta_get(cell, "r");
|
||||||
ci = mz_theta_get(cell, "c");
|
ci = mz_theta_get(cell, "c");
|
||||||
wallType = mz_theta_get(cell, "t");
|
wallType = mz_theta_get(cell, "t");
|
||||||
@@ -45,8 +45,8 @@ module theta_maze(rows, beginning_number, cell_width, wall_thickness, wall_heigh
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
thetaStep = 360 / len(maze[rows - 1]);
|
thetaStep = 360 / len(maze[rings - 1]);
|
||||||
r = cell_width * (rows + 1);
|
r = cell_width * (rings + 1);
|
||||||
for(theta = [0:thetaStep:360 - thetaStep]) {
|
for(theta = [0:thetaStep:360 - thetaStep]) {
|
||||||
vt1 = vt_from_angle(theta, r);
|
vt1 = vt_from_angle(theta, r);
|
||||||
vt2 = vt_from_angle(theta + thetaStep, r);
|
vt2 = vt_from_angle(theta + thetaStep, r);
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
use <polyline_join.scad>;
|
use <polyline_join.scad>;
|
||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_square_walls.scad>;
|
use <maze/mz_squarewalls.scad>;
|
||||||
use <path_extrude.scad>;
|
use <path_extrude.scad>;
|
||||||
use <torus_knot.scad>;
|
use <torus_knot.scad>;
|
||||||
use <ptf/ptf_rotate.scad>;
|
use <ptf/ptf_rotate.scad>;
|
||||||
@@ -36,9 +36,9 @@ module torus_knot_maze() {
|
|||||||
|
|
||||||
angle_yz = [each angle_yz_path, angle_yz_path[0]];
|
angle_yz = [each angle_yz_path, angle_yz_path[0]];
|
||||||
|
|
||||||
walls = mz_square_walls(
|
walls = mz_squarewalls(
|
||||||
mz_square_cells(rows, columns, x_wrapping = true),
|
mz_square(rows, columns, x_wrapping = true),
|
||||||
rows, columns, cell_width, left_border = false
|
cell_width, left_border = false
|
||||||
);
|
);
|
||||||
|
|
||||||
half_row = rows / 2;
|
half_row = rows / 2;
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
use <polyline_join.scad>;
|
use <polyline_join.scad>;
|
||||||
use <ptf/ptf_torus.scad>;
|
use <ptf/ptf_torus.scad>;
|
||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_square_walls.scad>;
|
use <maze/mz_squarewalls.scad>;
|
||||||
|
|
||||||
rows = 36;
|
rows = 36;
|
||||||
columns = 12;
|
columns = 12;
|
||||||
@@ -14,12 +14,12 @@ leng = rows * cell_width;
|
|||||||
radius = 0.5 * leng / PI;
|
radius = 0.5 * leng / PI;
|
||||||
a_step = 360 / leng;
|
a_step = 360 / leng;
|
||||||
|
|
||||||
cells = mz_square_cells(
|
cells = mz_square(
|
||||||
rows, columns,
|
rows, columns,
|
||||||
x_wrapping = true, y_wrapping = true
|
x_wrapping = true, y_wrapping = true
|
||||||
);
|
);
|
||||||
|
|
||||||
walls = mz_square_walls(cells, rows, columns, cell_width, left_border = false, bottom_border = false);
|
walls = mz_squarewalls(cells, cell_width, left_border = false, bottom_border = false);
|
||||||
|
|
||||||
size = [columns * cell_width, rows * cell_width];
|
size = [columns * cell_width, rows * cell_width];
|
||||||
for(wall_pts = walls) {
|
for(wall_pts = walls) {
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
use <polyline_join.scad>;
|
use <polyline_join.scad>;
|
||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_square_walls.scad>;
|
use <maze/mz_squarewalls.scad>;
|
||||||
use <ptf/ptf_x_twist.scad>;
|
use <ptf/ptf_x_twist.scad>;
|
||||||
use <ptf/ptf_y_twist.scad>;
|
use <ptf/ptf_y_twist.scad>;
|
||||||
|
|
||||||
@@ -12,11 +12,9 @@ angle = 90;
|
|||||||
axis = "X_AXIS"; // [X_AXIS, Y_AXIS]
|
axis = "X_AXIS"; // [X_AXIS, Y_AXIS]
|
||||||
// $fn = 24;
|
// $fn = 24;
|
||||||
|
|
||||||
cells = mz_square_cells(
|
cells = mz_square(rows, columns);
|
||||||
rows, columns
|
|
||||||
);
|
|
||||||
|
|
||||||
walls = mz_square_walls(cells, rows, columns, cell_width);
|
walls = mz_squarewalls(cells, cell_width);
|
||||||
|
|
||||||
size = [columns * cell_width, rows * cell_width];
|
size = [columns * cell_width, rows * cell_width];
|
||||||
for(wall_pts = walls) {
|
for(wall_pts = walls) {
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
use <maze/mz_square_initialize.scad>;
|
use <maze/mz_square_initialize.scad>;
|
||||||
use <maze/mz_square_cells.scad>;
|
use <maze/mz_square.scad>;
|
||||||
use <maze/mz_wang_tiles.scad>;
|
use <maze/mz_wang_tiles.scad>;
|
||||||
use <util/rand.scad>;
|
use <util/rand.scad>;
|
||||||
use <city_tile.scad>;
|
use <city_tile.scad>;
|
||||||
@@ -16,7 +16,7 @@ module maze_city(rows, columns, skyscraper_prs) {
|
|||||||
rand() < skyscraper_prs ? 0 : 1]
|
rand() < skyscraper_prs ? 0 : 1]
|
||||||
];
|
];
|
||||||
|
|
||||||
cells = mz_square_cells(rows, columns, [0, 0], init_cells = mz_square_initialize(rows, columns, mask));
|
cells = mz_square(rows, columns, [0, 0], init_cells = mz_square_initialize(rows, columns, mask));
|
||||||
|
|
||||||
tiles = mz_wang_tiles(cells);
|
tiles = mz_wang_tiles(cells);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user