|
|
|
|
| source("R/logging.R")
|
| for (f in list.files("R", pattern = "\\.R$", full.names = TRUE)) {
|
| if (!grepl("scripts_archive", f)) source(f)
|
| }
|
|
|
| cat("=== Extreme Comparison: 2-ring puzzle ===\n\n")
|
|
|
|
|
|
|
| rings <- 2
|
| diameter <- 300
|
| seed <- 1234
|
|
|
| warped_hex <- generate_puzzle(
|
| type = "hexagonal",
|
| seed = seed,
|
| grid = c(rings),
|
| size = c(diameter),
|
| do_warp = TRUE,
|
| do_trunc = TRUE,
|
| do_circular_border = FALSE
|
| )
|
|
|
| perfect_circle <- generate_puzzle(
|
| type = "hexagonal",
|
| seed = seed,
|
| grid = c(rings),
|
| size = c(diameter),
|
| do_warp = TRUE,
|
| do_trunc = TRUE,
|
| do_circular_border = TRUE
|
| )
|
|
|
|
|
| cat("Piece 2 (outer piece) comparison:\n\n")
|
| warped_path <- warped_hex$pieces[[2]]$path
|
| circle_path <- perfect_circle$pieces[[2]]$path
|
|
|
| cat("Warped Hexagon (L commands):\n")
|
| cat(warped_path, "\n\n")
|
|
|
| cat("Perfect Circle (A commands):\n")
|
| cat(circle_path, "\n\n")
|
|
|
|
|
| boundary_vertices <- 6
|
| arc_angle_degrees <- 360 / boundary_vertices
|
| arc_angle_radians <- arc_angle_degrees * pi / 180
|
| circle_radius <- diameter / 2
|
| sag <- circle_radius * (1 - cos(arc_angle_radians / 2))
|
|
|
| cat("=== Mathematical Analysis (2-ring) ===\n")
|
| cat(sprintf("Arc angle per segment: %.0f degrees\n", arc_angle_degrees))
|
| cat(sprintf("Arc sag: %.1f mm\n", sag))
|
| cat("\nWith 60-degree arcs, the difference should be much more visible!\n")
|
|
|
|
|
| writeLines(warped_hex$svg_content, "output/debug_warped_hex_2ring.svg")
|
| writeLines(perfect_circle$svg_content, "output/debug_perfect_circle_2ring.svg")
|
| cat("\n2-ring SVGs saved to output/ for visual comparison\n")
|
| cat("Open both files to see the difference in border shape.\n")
|
|
|