71 lines
2.0 KiB
JavaScript
Executable File
71 lines
2.0 KiB
JavaScript
Executable File
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Example of convex hull plot
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
function add_convex_hull_plot(title, x,y, name, clear){
|
|
if (!is_defined(name)) name = null
|
|
if (!is_defined(clear)) clear = false
|
|
plots = get_plots(title = title)
|
|
p = null
|
|
if (plots.length==0){
|
|
p = plot(null,name=name, undefined, undefined, title = title)[0]
|
|
p.getAxis(AxisId.X).setRange(-50,150)
|
|
p.getAxis(AxisId.Y).setRange(-50,150)
|
|
p.setLegendVisible(true)
|
|
} else {
|
|
p = plots[0]
|
|
if (clear){
|
|
p.clear()
|
|
}
|
|
p.addSeries(new LinePlotSeries(name))
|
|
}
|
|
s = p.getSeries(name)
|
|
s.setLinesVisible(false)
|
|
s.setPointSize(3)
|
|
s.setData(x, y)
|
|
|
|
//In the first time the plot shows, it takes some time for the color to be assigned
|
|
while (s.color == null){
|
|
sleep(0.001)
|
|
}
|
|
|
|
hull = new LinePlotSeries(name + " Hull", s.color)
|
|
|
|
//Bounding box
|
|
//x1 = Math.min.apply(null, x)
|
|
//x2 = Math.max.apply(null, x)
|
|
//y1 = Math.min.apply(null, y)
|
|
//y2 = Math.max.apply(null, y)
|
|
//(hx,hy) = ([x1,x2, x2, x1, x1], [y1, y1, y2, y2, y1])
|
|
|
|
//Convex Hull
|
|
ret = convex_hull(point_list=undefined, x=x, y=y)
|
|
hx=ret[0]
|
|
hy=ret[1]
|
|
hx.push(hx[0])
|
|
hy.push(hy[0])
|
|
|
|
p.addSeries(hull)
|
|
hull.setLineWidth(2)
|
|
hull.setData(hx,hy)
|
|
hull.setColor(s.color)
|
|
}
|
|
|
|
title = "Convex Hull"
|
|
if (get_plots(title).length>0){
|
|
get_plots(title)[0].clear()
|
|
}
|
|
|
|
for (var step=1; step<=5; step++){
|
|
x=[]
|
|
y=[]
|
|
for (var i=0; i<=50 ; i++){
|
|
x.push(Math.random() * 100 / step)
|
|
y.push(Math.random() * 100/ step)
|
|
}
|
|
add_convex_hull_plot (title, x,y,"Scan " + step)
|
|
}
|
|
|