jigsawR / tests /debug_archive /debug_edges_before_positioning.R
pjt222's picture
Upload folder using huggingface_hub
e232e39 verified
devtools::load_all()
cat("Checking fused edge coordinates BEFORE and AFTER positioning\n")
cat("============================================================\n\n")
# Generate pieces WITHOUT positioning (offset=0)
result_compact <- generate_puzzle(
type = "concentric",
seed = 42,
grid = c(3),
size = c(300),
tabsize = 7,
jitter = 2,
offset = 0, # NO separation
fusion_groups = list(c(1, 2), c(5, 6, 7)),
fusion_style = "dashed",
save_files = FALSE
)
cat("=== COMPACT (offset=0) - Fused edges should MATCH ===\n\n")
# Check pieces 5, 6, 7 edges
for (i in c(5, 6, 7)) {
piece <- result_compact$pieces[[i]]
edge_paths <- get_piece_edge_paths(piece)
cat(sprintf("Piece %d:\n", i))
for (edge in c("LEFT", "RIGHT")) {
path <- edge_paths[[edge]]
if (!is.null(path) && nzchar(path)) {
segs <- parse_svg_path(path)
start <- sprintf("(%.2f, %.2f)", segs[[1]]$x, segs[[1]]$y)
end_seg <- NULL
for (j in length(segs):2) {
if (segs[[j]]$type != "Z") {
end_seg <- segs[[j]]
break
}
}
end <- if (!is.null(end_seg)) sprintf("(%.2f, %.2f)", end_seg$x, end_seg$y) else "?"
is_fused <- isTRUE(piece$fused_edges[[edge]])
cat(sprintf(" %s: %s -> %s %s\n", edge, start, end, if(is_fused) "[FUSED]" else ""))
}
}
cat("\n")
}
cat("Expected pairs (should have same coordinates):\n")
cat(" Piece 5 RIGHT <-> Piece 6 LEFT\n")
cat(" Piece 6 RIGHT <-> Piece 7 LEFT\n\n")
# Now check AFTER positioning
result_separated <- generate_puzzle(
type = "concentric",
seed = 42,
grid = c(3),
size = c(300),
tabsize = 7,
jitter = 2,
offset = 50, # WITH separation
fusion_groups = list(c(1, 2), c(5, 6, 7)),
fusion_style = "dashed",
save_files = FALSE
)
cat("=== SEPARATED (offset=50) - Fused edges should STILL match ===\n\n")
for (i in c(5, 6, 7)) {
piece <- result_separated$pieces[[i]]
edge_paths <- get_piece_edge_paths(piece)
cat(sprintf("Piece %d:\n", i))
for (edge in c("LEFT", "RIGHT")) {
path <- edge_paths[[edge]]
if (!is.null(path) && nzchar(path)) {
segs <- parse_svg_path(path)
start <- sprintf("(%.2f, %.2f)", segs[[1]]$x, segs[[1]]$y)
end_seg <- NULL
for (j in length(segs):2) {
if (segs[[j]]$type != "Z") {
end_seg <- segs[[j]]
break
}
}
end <- if (!is.null(end_seg)) sprintf("(%.2f, %.2f)", end_seg$x, end_seg$y) else "?"
is_fused <- isTRUE(piece$fused_edges[[edge]])
cat(sprintf(" %s: %s -> %s %s\n", edge, start, end, if(is_fused) "[FUSED]" else ""))
}
}
cat("\n")
}
cat("=== PIECE CENTERS (to verify group moved together) ===\n\n")
cat("Compact:\n")
for (i in c(5, 6, 7)) {
c <- result_compact$pieces[[i]]$center
cat(sprintf(" Piece %d: (%.2f, %.2f)\n", i, c[1], c[2]))
}
cat("\nSeparated:\n")
for (i in c(5, 6, 7)) {
c <- result_separated$pieces[[i]]$center
cat(sprintf(" Piece %d: (%.2f, %.2f)\n", i, c[1], c[2]))
}
cat("\nTranslation applied (should be same for all in group):\n")
for (i in c(5, 6, 7)) {
c1 <- result_compact$pieces[[i]]$center
c2 <- result_separated$pieces[[i]]$center
dx <- c2[1] - c1[1]
dy <- c2[2] - c1[2]
cat(sprintf(" Piece %d: dx=%.2f, dy=%.2f\n", i, dx, dy))
}