jigsawR / tests /debug_archive /debug_boundary_detection.R
pjt222's picture
Upload folder using huggingface_hub
e232e39 verified
# Debug: Why are piece 36's vertices being marked as boundary vertices?
source("R/logging.R")
for (f in list.files("R", pattern = "\\.R$", full.names = TRUE)) {
if (!grepl("scripts_archive", f)) source(f)
}
rings <- 7
num_pieces <- 3 * rings * (rings - 1) + 1
piece_radius <- 400 / (4 * rings - 2)
# Calculate original vertices
piece_vertices_original <- list()
for (piece_id in 1:num_pieces) {
axial_coords <- map_piece_id_to_axial(piece_id, rings)
cart_coords <- axial_to_cartesian(
q = axial_coords$q,
r = axial_coords$r,
hex_size = piece_radius
)
vertices <- list()
for (i in 0:5) {
vertex_angle <- i * pi / 3
vx <- cart_coords$x + piece_radius * cos(vertex_angle)
vy <- cart_coords$y + piece_radius * sin(vertex_angle)
vertices[[i + 1]] <- c(vx, vy)
}
piece_vertices_original[[piece_id]] <- vertices
}
# Build vertex sharing map
vertex_sharing <- list()
for (piece_id in 1:num_pieces) {
for (i in 1:6) {
v <- piece_vertices_original[[piece_id]][[i]]
v_key <- sprintf("%.1f,%.1f", v[1], v[2])
if (is.null(vertex_sharing[[v_key]])) {
vertex_sharing[[v_key]] <- list(pieces = c(), coords = v)
}
vertex_sharing[[v_key]]$pieces <- c(vertex_sharing[[v_key]]$pieces, piece_id)
}
}
# Find boundary vertices (shared by < 3 pieces)
boundary_vertex_keys <- c()
for (v_key in names(vertex_sharing)) {
if (length(unique(vertex_sharing[[v_key]]$pieces)) < 3) {
boundary_vertex_keys <- c(boundary_vertex_keys, v_key)
}
}
cat("Total boundary vertices:", length(boundary_vertex_keys), "\n\n")
# Check piece 36's vertices
cat("=== Piece 36 vertex analysis ===\n")
piece_id <- 36
info <- map_piece_id_to_axial(piece_id, rings)
cat("Piece 36 is in ring", info$ring, ", position", info$position, "\n\n")
for (i in 1:6) {
v <- piece_vertices_original[[piece_id]][[i]]
v_key <- sprintf("%.1f,%.1f", v[1], v[2])
sharing_count <- length(unique(vertex_sharing[[v_key]]$pieces))
is_boundary <- v_key %in% boundary_vertex_keys
cat("Vertex", i, ": (", round(v[1], 2), ",", round(v[2], 2), ")\n")
cat(" Key:", v_key, "\n")
cat(" Shared by", sharing_count, "pieces:", paste(unique(vertex_sharing[[v_key]]$pieces), collapse=", "), "\n")
cat(" Is boundary?", is_boundary, "\n\n")
}
# Check distances
cat("\n=== Distance check ===\n")
max_dist <- 0
for (piece_id in 1:num_pieces) {
for (i in 1:6) {
v <- piece_vertices_original[[piece_id]][[i]]
d <- sqrt(v[1]^2 + v[2]^2)
max_dist <- max(max_dist, d)
}
}
cat("Max vertex distance from origin:", round(max_dist, 2), "\n")
for (i in 1:6) {
v <- piece_vertices_original[[36]][[i]]
d <- sqrt(v[1]^2 + v[2]^2)
cat("Vertex", i, "distance:", round(d, 2), "\n")
}