У меня есть ряд точек на графике, который выглядит примерно так: 
, и я хотел бы создать вокруг них ограничивающий многоугольник, например: 
Я нашел довольно хорошее объяснение того, как это сделать, в http://bl.ocks.org/gka/1552725 Вычислить ограничивающий многоугольник альфа-формы из триангуляции Делоне но это использует версию 3 d3, и я использую версию 4. Мне удалось реализовать некоторые из примеров с использованием v4, но я не могу понять, как отфильтровать треугольники. До сих пор я справился с этим: 
Буду признателен за любую помощь.Мой код выглядит так:
vertices = vertices.map((d) => {
//console.log(d)
return [xScale(d[0]),yScale(d[1])]
})
let alpha = 30
let dsq = function(a,b) {
var dx = a[0]-b[0], dy = a[1]-b[1];
return dx*dx+dy*dy;
}
let asq = alpha*alpha
vertices = vertices.filter(function(t) {
return dsq(t[0],t[1]) < asq && dsq(t[0],t[2]) < asq && dsq(t[1],t[2]) < asq;
})
let outline = Delaunay.from(vertices)
//let { points, triangles } = outline;
parent.append('path')
.attr('fill', '#FCE6D6')
.attr('opacity',0.5)
.attr('stroke', '#000000')
.attr('d', outline.render());
Изменение последней строки на:
.attr('d', outline.renderHull());
даст мне выпуклую оболочку формы, но это вогнутая оболочка, которую я пытаюсьСоздайте.Я предполагаю, что я фильтрую вершины перед передачей их константе контура через Delauny.from (вершины).Я пробовал это, используя уравнения в примере v3, связанном выше, но это просто удаляет все вершины.