| 9140 | |
| 9141 | // Remove duplicate edge labels |
| 9142 | function dedupEdges (edges, labels, useColor) { |
| 9143 | if (edges.length === 0) { |
| 9144 | return |
| 9145 | } |
| 9146 | if (labels) { |
| 9147 | for (var i = 0; i < edges.length; ++i) { |
| 9148 | var e = edges[i] |
| 9149 | var a = labels[e[0]] |
| 9150 | var b = labels[e[1]] |
| 9151 | e[0] = Math.min(a, b) |
| 9152 | e[1] = Math.max(a, b) |
| 9153 | } |
| 9154 | } else { |
| 9155 | for (var i = 0; i < edges.length; ++i) { |
| 9156 | var e = edges[i] |
| 9157 | var a = e[0] |
| 9158 | var b = e[1] |
| 9159 | e[0] = Math.min(a, b) |
| 9160 | e[1] = Math.max(a, b) |
| 9161 | } |
| 9162 | } |
| 9163 | if (useColor) { |
| 9164 | edges.sort(compareLex3) |
| 9165 | } else { |
| 9166 | edges.sort(compareLex2) |
| 9167 | } |
| 9168 | var ptr = 1 |
| 9169 | for (var i = 1; i < edges.length; ++i) { |
| 9170 | var prev = edges[i - 1] |
| 9171 | var next = edges[i] |
| 9172 | if (next[0] === prev[0] && next[1] === prev[1] && |
| 9173 | (!useColor || next[2] === prev[2])) { |
| 9174 | continue |
| 9175 | } |
| 9176 | edges[ptr++] = next |
| 9177 | } |
| 9178 | edges.length = ptr |
| 9179 | } |
| 9180 | |
| 9181 | function preRound (points, edges, useColor) { |
| 9182 | var labels = dedupPoints(points, [], boundPoints(points)) |