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

Function monotoneTriangulate

stackgl_modules/index.js:8572–8627  ·  view source on GitHub ↗
(points, edges)

Source from the content-addressed store, hash-verified

8570
8571
8572function monotoneTriangulate(points, edges) {
8573
8574 var numPoints = points.length
8575 var numEdges = edges.length
8576
8577 var events = []
8578
8579 //Create point events
8580 for(var i=0; i<numPoints; ++i) {
8581 events.push(new Event(
8582 points[i],
8583 null,
8584 EVENT_POINT,
8585 i))
8586 }
8587
8588 //Create edge events
8589 for(var i=0; i<numEdges; ++i) {
8590 var e = edges[i]
8591 var a = points[e[0]]
8592 var b = points[e[1]]
8593 if(a[0] < b[0]) {
8594 events.push(
8595 new Event(a, b, EVENT_START, i),
8596 new Event(b, a, EVENT_END, i))
8597 } else if(a[0] > b[0]) {
8598 events.push(
8599 new Event(b, a, EVENT_START, i),
8600 new Event(a, b, EVENT_END, i))
8601 }
8602 }
8603
8604 //Sort events
8605 events.sort(compareEvent)
8606
8607 //Initialize hull
8608 var minX = events[0].a[0] - (1 + Math.abs(events[0].a[0])) * Math.pow(2, -52)
8609 var hull = [ new PartialHull([minX, 1], [minX, 0], -1, [], [], [], []) ]
8610
8611 //Process events in order
8612 var cells = []
8613 for(var i=0, numEvents=events.length; i<numEvents; ++i) {
8614 var event = events[i]
8615 var type = event.type
8616 if(type === EVENT_POINT) {
8617 addPoint(cells, hull, points, event.a, event.idx)
8618 } else if(type === EVENT_START) {
8619 splitHulls(hull, points, event)
8620 } else {
8621 mergeHulls(hull, points, event)
8622 }
8623 }
8624
8625 //Return triangulation
8626 return cells
8627}
8628
8629

Callers 1

cdt2dFunction · 0.85

Calls 3

addPointFunction · 0.85
splitHullsFunction · 0.85
mergeHullsFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…