chart = {
const svg = d3.create("svg")
.attr("height", 512)
.attr("width", 512)
.attr('viewBox', "-256 -256 512 512")
.attr('style', 'background: #25321E')
let points = (new Array(10000)).fill(0).map(p => {
let n, d, dd
let x = (Math.random()-.5)*512
let y = (Math.random()-.5)*512
let z = (Math.random()-.5)*512
let begin = {
'x': x,
'y': y,
'z': z,
}
let end = begin
for (let i = 0; i < 100; i++) {
n = normal(end)
n = invert(n)
d = sdCircle(end)
end = add(end,mult(n, d*.5))
}
return [begin, end]
})
console.log(points)
svg.selectAll('line')
.data( points )
.enter()
.append('line')
.attr('x1', p => p[0].x)
.attr('y1', p => p[0].y)
.attr('x2', p => p[1].x)
.attr('y2', p => p[1].y)
.attr('stroke', p => sdCircle(p[0]) > 0 ? '#00A1BC' : '#FCE000')
.attr('stroke-width', 1.)
svg.selectAll('circle')
.data( points )
.enter()
.append('circle')
.attr('cx', p => p[1].x)
.attr('cy', p => p[1].y)
.attr('r', p => 2)
.attr('fill', p => sdCircle(p[0]) > 0 ? '#00A1BC' : '#FCE000')
return svg.node()
}