pro mg_ogisosurface_example, volume, n, renderer=renderer, _extra=e
compile_opt strictarr
_n = n + 2
dims = size(volume, /dimensions)
xr = [0, dims[0]]
yr = [0, dims[1]]
zr = [0, dims[2]]
xc = mg_linear_function(xr, [-0.6, 0.6])
yc = mg_linear_function(yr, [-0.6, 0.6])
zc = mg_linear_function(zr, [-0.6, 0.6])
viewgroup = obj_new('IDLgrViewGroup')
view = obj_new('IDLgrView', location=[0.0, 0.0], dimensions=[5./6., 1.0], $
units=3)
viewgroup->add, view
model = obj_new('IDLgrModel')
view->add, model
palette = obj_new('IDLgrPalette')
viewgroup->add, palette
palette->loadCT, 5
maxV = max(volume, min=minV)
values = (maxV - minV) * findgen(_n) / (_n - 1L) + minV
colors = bytscl(values)
for i = 0L, _n - 1L do begin
isosurface, volume, values[i], vertices, polygons
if (polygons[0] lt 0L) then continue
polygon = obj_new('IDLgrPolygon', vertices, polygons=polygons, $
palette=palette, color=colors[i], $
_extra=e)
model->add, polygon
polygon->setProperty, xcoord_conv=xc, ycoord_conv=yc, zcoord_conv=zc
endfor
lightModel = obj_new('IDLgrModel')
view->add, lightModel
light = obj_new('IDLgrLight', type=2, location=[-1, 1, 1])
lightModel->add, light
model->rotate, [0, 1, 0], -30
model->rotate, [1, 0, 0], 30
xaxis = obj_new('IDLgrAxis', direction=0, range=xr, /exact, $
location=[xr[0], yr[0], zr[0]], ticklen=0.015)
model->add, xaxis
yaxis = obj_new('IDLgrAxis', direction=1, range=yr, /exact, $
location=[xr[0], yr[0], zr[0]], ticklen=0.015)
model->add, yaxis
zaxis = obj_new('IDLgrAxis', direction=2, range=zr, /exact, $
location=[xr[0], yr[0], zr[0]], ticklen=0.015)
model->add, zaxis
xaxis->setProperty, xcoord_conv=xc, ycoord_conv=yc, zcoord_conv=zc
yaxis->setProperty, xcoord_conv=xc, ycoord_conv=yc, zcoord_conv=zc
zaxis->setProperty, xcoord_conv=xc, ycoord_conv=yc, zcoord_conv=zc
cbView = obj_new('IDLgrView', location=[5./6., 0.0], dimensions=[1./6., 1.], $
units=3)
viewgroup->add, cbView
cbModel = obj_new('IDLgrModel')
cbView->add, cbModel
ticktext = obj_new('IDLgrText', strtrim(values, 2))
colorbar = obj_new('IDLgrColorbar', palette=palette, $
show_axes=2, /show_outline, $
major=_n, ticktext=ticktext, tickvalues=colors)
cbModel->add, colorbar
colorbar->getProperty, xrange=xr, yrange=yr
xc = mg_linear_function(xr, [-0.25, 0.25])
yc = mg_linear_function(yr, [-0.9, 0.9])
colorbar->setProperty, xcoord_conv=xc, ycoord_conv=yc
window = obj_new('IDLgrWindow', dimensions=[600, 500], $
graphics_tree=viewgroup, renderer=renderer)
window->draw
end
restore, filename=filepath('storm25.sav', subdir=['examples', 'demo', 'demodata'])
mg_ogisosurface_example, p, 9, /shading
end