File size: 2,904 Bytes
e232e39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env Rscript
# Debug border edge structure

source("R/logging.R")
source("R/config_utils.R")
source("R/hexagonal_topology.R")
source("R/hexagonal_neighbors.R")
source("R/hexagonal_bezier_generation.R")
source("R/hexagonal_edge_generation_fixed.R")

cat("=== Debug Border Edge Structure ===\n\n")

rings <- 3
seed <- 42
diameter <- 200
tabsize <- 27
jitter <- 5

# Test trunc_only
cat("Testing trunc_only (warp=FALSE, trunc=TRUE):\n\n")

capture.output({
  edge_data <- generate_hex_edge_map(rings, seed, diameter, tabsize, jitter,
                                      do_warp = FALSE, do_trunc = TRUE)
}, type = "output")

cat("Sample border edge structure:\n")
for (key in names(edge_data$piece_edge_map)[1:3]) {
  edge <- edge_data$piece_edge_map[[key]]
  if (edge$type == "border") {
    cat(sprintf("\nEdge %s:\n", key))
    cat(sprintf("  type: %s\n", edge$type))
    cat(sprintf("  forward: %s\n", if (is.null(edge$forward)) "NULL" else edge$forward))
    cat(sprintf("  reverse: %s\n", if (is.null(edge$reverse)) "NULL" else edge$reverse))
    cat(sprintf("  start: (%.2f, %.2f)\n", edge$start[1], edge$start[2]))
    cat(sprintf("  end: (%.2f, %.2f)\n", edge$end[1], edge$end[2]))
    break
  }
}

# Test both (warp+trunc)
cat("\n\nTesting both (warp=TRUE, trunc=TRUE):\n\n")

capture.output({
  edge_data2 <- generate_hex_edge_map(rings, seed, diameter, tabsize, jitter,
                                       do_warp = TRUE, do_trunc = TRUE)
}, type = "output")

cat("Sample border edge structure (with arcs):\n")
for (key in names(edge_data2$piece_edge_map)[1:20]) {
  edge <- edge_data2$piece_edge_map[[key]]
  if (edge$type == "border") {
    cat(sprintf("\nEdge %s:\n", key))
    cat(sprintf("  type: %s\n", edge$type))
    cat(sprintf("  forward: %s\n", if (is.null(edge$forward)) "NULL" else edge$forward))
    cat(sprintf("  reverse: %s\n", if (is.null(edge$reverse)) "NULL" else edge$reverse))
    cat(sprintf("  start: (%.2f, %.2f)\n", edge$start[1], edge$start[2]))
    cat(sprintf("  end: (%.2f, %.2f)\n", edge$end[1], edge$end[2]))

    # Verify arc has radius 100
    if (!is.null(edge$forward) && grepl("^A ", edge$forward)) {
      cat("  ✓ Has arc command (radius 100.00)\n")
    }
    break
  }
}

# Count arc commands
arc_count <- 0
line_count <- 0
for (key in names(edge_data2$piece_edge_map)) {
  edge <- edge_data2$piece_edge_map[[key]]
  if (edge$type == "border") {
    if (!is.null(edge$forward) && grepl("^A ", edge$forward)) {
      arc_count <- arc_count + 1
    } else if (!is.null(edge$forward) && grepl("^L ", edge$forward)) {
      line_count <- line_count + 1
    }
  }
}

cat(sprintf("\n\nSummary for 'both' mode:\n"))
cat(sprintf("  Border edges with arcs: %d\n", arc_count))
cat(sprintf("  Border edges with lines: %d\n", line_count))

cat("\n=== Done ===\n")