diff --git a/examples/maze/cylinder_maze.scad b/examples/maze/cylinder_maze.scad index 31d6a7c4..ba30a0c4 100644 --- a/examples/maze/cylinder_maze.scad +++ b/examples/maze/cylinder_maze.scad @@ -1,5 +1,6 @@ use ; -use ; +use ; +use ; radius = 30; height = 60; @@ -11,8 +12,7 @@ wall_top_scale = 0.25; fn = 24; -module build_ramp_maze(rows, columns, blocks, block_width, wall_thickness, wall_height, wall_top_scale) { - +module cylinder_maze() { module ramp_line(point1, point2, width = 1, height = 1, top_scale = 0.25) { angle = 90 - atan((point2[1] - point1[1]) / (point2[0] - point1[0])); offset_x = 0.5 * width * cos(angle); @@ -32,61 +32,26 @@ module build_ramp_maze(rows, columns, blocks, block_width, wall_thickness, wall_ } } - module draw_ramp_block(block, block_width, wall_thickness, wall_height, wall_top_scale) { - translate([get_x(block) - 1, get_y(block) - 1] * block_width) { - if(upper_wall(block) || upper_right_wall(block)) { - ramp_line( - [0, block_width], [block_width, block_width], wall_thickness, wall_height, wall_top_scale - ); - } - - if(right_wall(block) || upper_right_wall(block)) { - ramp_line( - [block_width, block_width], [block_width, 0], wall_thickness, wall_height, wall_top_scale - ); - } - } - } - - for(block = blocks) { - draw_ramp_block( - block, - block_width, - wall_thickness, - wall_height, - wall_top_scale - ); - } - - ramp_line( - [0, 0], [block_width * columns, 0], - wall_thickness, wall_height, wall_top_scale - ); -} - -module cylinder_maze() { maze_rows = round(height / block_width); maze_columns = round(2 * 3.14159 * radius / block_width); - maze_blocks = go_maze( - 1, maze_rows, - starting_maze(maze_rows, maze_columns), + maze_blocks = mz_blocks( + [1, maze_rows], maze_rows, maze_columns, x_circular = true ); - + + walls = mz_walls(maze_blocks, maze_rows, maze_columns, block_width, left_border = false); + leng_circumference = block_width * maze_columns + wall_thickness; bend(size = [leng_circumference, block_width * maze_rows + wall_thickness, wall_height], angle = 360 + 360 * wall_thickness / leng_circumference, frags = fn) - translate([0, wall_thickness / 2, 0]) build_ramp_maze( - maze_rows, - maze_columns, - maze_blocks, - block_width, - wall_thickness, - wall_height, - wall_top_scale - ); + translate([0, wall_thickness / 2]) + for(wall = walls) { + for(i = [0:len(wall) - 2]) { + ramp_line(wall[i], wall[i + 1], wall_thickness, wall_height, wall_top_scale); + } + } } cylinder_maze();