function randi(min,max) {
return Math.floor(Math.random()*(max-min+1))+min;};
var d=.005,l=5,n=3,a=randi(11,19),b=randi(24,64);
function ar(k,a,b) {return Array(1280).fill(k).map((k,t)=>
[k*(Math.cos(d*t)+Math.sin(a*d*t)/2-Math.cos(b*d*t)/6),
k*(Math.sin(d*t)+Math.cos(a*d*t)/2-Math.sin(b*d*t)/6),k]);};
colors:Highcharts.getOptions().colors.map(function(color) {
radialGradient:{cx:.4,cy:.3,r:.2},
[1,Highcharts.color(color).brighten(-0.2).get('rgb')]]};})});
for (var i=1; i<n+1; i++){
series.push({name:i,colorByPoint:true,
accessibility:{exposeAsGroupOnly:true},
marker:{radius:1},data:ar(i,a,b)})};
var chart=new Highcharts.Chart({
chart:{renderTo:'hich',margin:100,type:'scatter3d',
options3d:{enabled:true,alpha:20,beta:20,depth:250,
viewDistance:5,fitToPlot:false,
frame:{bottom:{size:1,color:'rgba(0,0,0,0.05)'},
back:{size:1,color:'rgba(0,0,0,0.1)'},
side:{ size:1,color:'rgba(0,0,0,0.15)'}}} },
title:{text:'Scatter 3D with rotation in space'},
plotOptions:{scatter:{width:l,height:l,depth:l}},
yAxis:{min:-l,max:l,title:null},
xAxis:{min:-l,max:l,gridLineWidth:1},
zAxis:{min:0,max:l,showFirstLabel:false},
legend:{enabled:false},series:series});
(function(H){function dragStart(eStart){
eStart=chart.pointer.normalize(eStart);
var posX=eStart.chartX,posY=eStart.chartY,
alpha=chart.options.chart.options3d.alpha,
beta=chart.options.chart.options3d.beta,
sensitivity=3,handlers=[];
e=chart.pointer.normalize(e);
options3d:{alpha:alpha+(e.chartY-posY)/sensitivity,
beta:beta+(posX-e.chartX)/sensitivity}}},
undefined,undefined,false);}
function unbindAll(){handlers.forEach(function(unbind){
if (unbind){unbind();}});
handlers.push(H.addEvent(document,'mousemove', drag));
handlers.push(H.addEvent(document,'touchmove', drag));
handlers.push(H.addEvent(document,'mouseup',unbindAll));
handlers.push(H.addEvent(document,'touchend',unbindAll));}
H.addEvent(chart.container,'mousedown',dragStart);
H.addEvent(chart.container,'touchstart',dragStart);