jigsawR / tests /debug_archive /debug_7ring_simple.R
pjt222's picture
Upload folder using huggingface_hub
e232e39 verified
# Simple 7-ring hexagonal puzzle debug
# Set working directory
setwd("D:/dev/p/jigsawR")
library(devtools)
load_all()
cat("Testing 7-ring puzzle generation\n")
cat("================================\n\n")
rings <- 7
diameter <- 400
seed <- 42
# Calculate values
num_pieces <- 3 * rings * (rings - 1) + 1
piece_radius <- diameter / (rings * 4)
cat("Parameters:\n")
cat(" rings:", rings, "\n")
cat(" diameter:", diameter, "\n")
cat(" num_pieces:", num_pieces, "\n")
cat(" piece_radius:", piece_radius, "\n\n")
# Check a few key pieces
cat("Checking extremal pieces...\n")
# Leftmost piece should be at q = -(rings-1), r = 0
leftmost_axial <- map_piece_id_to_axial(1, rings)
cat("Center piece: q=", leftmost_axial$q, ", r=", leftmost_axial$r, "\n")
# Find the actual leftmost piece
cat("\nSearching for extremal positions...\n")
min_x <- Inf
max_x <- -Inf
leftmost_id <- 0
rightmost_id <- 0
for (id in 1:num_pieces) {
axial <- map_piece_id_to_axial(id, rings)
cart <- axial_to_cartesian(axial$q, axial$r, piece_radius)
if (cart$x < min_x) {
min_x <- cart$x
leftmost_id <- id
}
if (cart$x > max_x) {
max_x <- cart$x
rightmost_id <- id
}
}
cat("Leftmost piece:", leftmost_id, "at x =", min_x, "\n")
cat("Rightmost piece:", rightmost_id, "at x =", max_x, "\n")
# Get their axial coordinates
left_axial <- map_piece_id_to_axial(leftmost_id, rings)
right_axial <- map_piece_id_to_axial(rightmost_id, rings)
cat("\nLeftmost: q=", left_axial$q, ", r=", left_axial$r, ", ring=", left_axial$ring, "\n")
cat("Rightmost: q=", right_axial$q, ", r=", right_axial$r, ", ring=", right_axial$ring, "\n")
# Now test warp on these positions
cat("\n\nWarp transformation check:\n")
cat("---------------------------\n")
# Calculate vertex positions for leftmost piece
left_cart <- axial_to_cartesian(left_axial$q, left_axial$r, piece_radius)
right_cart <- axial_to_cartesian(right_axial$q, right_axial$r, piece_radius)
# Get the leftmost vertex of the leftmost piece
left_vertex_x <- left_cart$x - piece_radius # vertex 3 at 180 degrees
left_vertex_y <- left_cart$y
cat("Leftmost vertex: (", left_vertex_x, ", ", left_vertex_y, ")\n")
cat("Distance from origin:", sqrt(left_vertex_x^2 + left_vertex_y^2), "\n")
# Apply warp
warped <- apply_hex_warp(left_vertex_x, left_vertex_y)
cat("After warp: (", warped$x, ", ", warped$y, ")\n")
cat("Warped distance:", sqrt(warped$x^2 + warped$y^2), "\n")
# Generate the puzzle
cat("\n\nGenerating puzzle...\n")
result <- tryCatch({
generate_puzzle(
type = "hexagonal",
grid = c(rings),
size = c(diameter),
seed = seed,
offset = 0,
do_warp = TRUE,
do_trunc = TRUE
)
}, error = function(e) {
cat("ERROR:", e$message, "\n")
NULL
})
if (!is.null(result)) {
cat("Success! Canvas size:", result$canvas_size[1], "x", result$canvas_size[2], "\n")
output_file <- "output/debug_7ring_warp.svg"
writeLines(result$svg_content, output_file)
cat("Saved to:", output_file, "\n")
} else {
cat("Failed to generate puzzle\n")
}
cat("\nDone.\n")