MCPcopy Index your code
hub / github.com/plotly/plotly.js / dedupPoints

Function dedupPoints

stackgl_modules/index.js:9059–9125  ·  view source on GitHub ↗
(floatPoints, ratPoints, floatBounds)

Source from the content-addressed store, hash-verified

9057
9058// Merge overlapping points
9059function dedupPoints (floatPoints, ratPoints, floatBounds) {
9060 var numPoints = ratPoints.length
9061 var uf = new UnionFind(numPoints)
9062
9063 // Compute rational bounds
9064 var bounds = []
9065 for (var i = 0; i < ratPoints.length; ++i) {
9066 var p = ratPoints[i]
9067 var xb = boundRat(p[0])
9068 var yb = boundRat(p[1])
9069 bounds.push([
9070 nextafter(xb[0], -Infinity),
9071 nextafter(yb[0], -Infinity),
9072 nextafter(xb[1], Infinity),
9073 nextafter(yb[1], Infinity)
9074 ])
9075 }
9076
9077 // Link all points with over lapping boxes
9078 boxIntersect(bounds, function (i, j) {
9079 uf.link(i, j)
9080 })
9081
9082 // Do 1 pass over points to combine points in label sets
9083 var noDupes = true
9084 var labels = new Array(numPoints)
9085 for (var i = 0; i < numPoints; ++i) {
9086 var j = uf.find(i)
9087 if (j !== i) {
9088 // Clear no-dupes flag, zero out label
9089 noDupes = false
9090 // Make each point the top-left point from its cell
9091 floatPoints[j] = [
9092 Math.min(floatPoints[i][0], floatPoints[j][0]),
9093 Math.min(floatPoints[i][1], floatPoints[j][1])
9094 ]
9095 }
9096 }
9097
9098 // If no duplicates, return null to signal termination
9099 if (noDupes) {
9100 return null
9101 }
9102
9103 var ptr = 0
9104 for (var i = 0; i < numPoints; ++i) {
9105 var j = uf.find(i)
9106 if (j === i) {
9107 labels[i] = ptr
9108 floatPoints[ptr++] = floatPoints[i]
9109 } else {
9110 labels[i] = -1
9111 }
9112 }
9113
9114 floatPoints.length = ptr
9115
9116 // Do a second pass to fix up missing labels

Callers 2

preRoundFunction · 0.85
snapRoundFunction · 0.85

Calls 3

boundRatFunction · 0.85
nextafterFunction · 0.85
boxIntersectFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…