|
|
|
|
|
|
| cat("=== Debugging offset_path_coords ===\n\n")
|
|
|
|
|
| offset_path_coords <- function(path_segment, offset_x, offset_y) {
|
|
|
| cmd <- substr(trimws(path_segment), 1, 1)
|
|
|
| cat("Input path_segment:", substr(path_segment, 1, 100), "...\n")
|
| cat("Command:", cmd, "\n")
|
| cat("Offset:", offset_x, offset_y, "\n")
|
|
|
| if (cmd == "A") {
|
|
|
| return(path_segment)
|
| } else {
|
|
|
| numbers <- as.numeric(unlist(strsplit(path_segment, "[CLM ]+")))
|
| numbers <- numbers[!is.na(numbers)]
|
|
|
| cat("Extracted numbers:", length(numbers), "\n")
|
| cat("Numbers:", head(numbers, 12), "...\n")
|
|
|
|
|
| for (i in seq_along(numbers)) {
|
| if (i %% 2 == 1) {
|
| numbers[i] <- numbers[i] + offset_x
|
| } else {
|
| numbers[i] <- numbers[i] + offset_y
|
| }
|
| }
|
|
|
|
|
| coords <- sprintf("%.2f", numbers)
|
| result <- paste(cmd, paste(coords, collapse = " "))
|
| cat("Result:", substr(result, 1, 100), "...\n\n")
|
| return(result)
|
| }
|
| }
|
|
|
|
|
| v1 <- c(0, 0)
|
| v2 <- c(10, 0)
|
|
|
|
|
| test_path <- "C 2.00 1.00 5.00 -2.00 3.00 3.00 C 4.00 5.00 6.00 5.00 7.00 3.00 C 8.00 -1.00 9.00 0.00 10.00 0.00"
|
|
|
| cat("=== Test 1: Simple offset ===\n")
|
| result <- offset_path_coords(test_path, 100, 50)
|
|
|
| cat("\n=== Test 2: What the edge map generates ===\n")
|
|
|
| source("R/hexagonal_bezier_generation.R")
|
| edge <- generate_hex_bezier_edge(
|
| v1 = c(0, 0),
|
| v2 = c(16.67, 0),
|
| seed = 42,
|
| edge_id = 1,
|
| tab_params = list(tabsize = 27, jitter = 5)
|
| )
|
| cat("Forward edge:\n", edge$forward, "\n\n")
|
|
|
| cat("Applying offset (100, 50):\n")
|
| result2 <- offset_path_coords(edge$forward, 100, 50)
|
|
|
|
|
|
|
| cat("\n=== Problem Analysis ===\n")
|
| cat("The path has MULTIPLE C commands, but we only add ONE 'C' prefix\n")
|
| cat("This is the bug - need to handle multiple commands in sequence\n")
|
|
|
|
|
| c_count <- length(gregexpr("C", test_path)[[1]])
|
| cat("Number of C commands in test_path:", c_count, "\n")
|
|
|