Scientific Visualization Using MATLAB Robert Putnam putnambu edu
Scientific Visualization Using MATLAB Robert Putnam putnam@bu. edu Scientific Visualization Using MATLAB - Summer 2011
Outline Introduction Geometry / Topology / Data Types Camera, lights, … Scalar visualization Vector visualization. Resources Scientific Visualization Using MATLAB - Summer 2011
Scientific Visualization • Visualization: converting raw data to a form that is viewable and understandable to humans. • Scientific visualization: specifically concerned with data that has a well-defined representation in 2 D or 3 D space (e. g. , from simulation mesh or scanner). *Adapted from The Para. View Tutorial, Moreland Scientific Visualization Using MATLAB - Summer 2011
Generic visualization pipeline Filters(s) data/geometry/topology Scientific Visualization Using MATLAB – Summer 2011 ----------- Source(s) Output (Rendering) graphics
Geometry v. Topology Geometry of a dataset ~= points 0, 1 1, 1 2, 1 3, 1 0, 0 1, 0 2, 0 3, 0 Topology ~= connections among points, which define cells So, what’s the topology here? Scientific Visualization Using MATLAB – Summer 2011
Geometry v. Topology 0, 1 1, 1 2, 1 3, 1 0, 0 1, 0 2, 0 3, 0 Scientific Visualization Using MATLAB – Summer 2011
Geometry v. Topology 0, 1 1, 1 2, 1 3, 1 0, 0 1, 0 2, 0 3, 0 or 0, 1 1, 1 2, 1 3, 1 0, 0 1, 0 2, 0 3, 0 Scientific Visualization Using MATLAB – Summer 2011
Geometry v. Topology or 0, 1 1, 1 2, 1 3, 1 0, 0 1, 0 2, 0 3, 0 Scientific Visualization Using MATLAB – Summer 2011
Geometry v. Topology or 0, 1 1, 1 2, 1 3, 1 0, 0 1, 0 2, 0 3, 0 or or 0, 1 1, 1 2, 1 3, 1 0, 0 1, 0 2, 0 3, 0 Scientific Visualization Using MATLAB – Summer 2011
Geometry/Topology Structure may be regular or irregular – Regular (structured) • need to store only beginning position, spacing, number of points • smaller memory footprint per cell (topology can be generated on the fly) • examples: image data, rectilinear grid, structured grid – Irregular (unstructured) • information can be represented more densely where it changes quickly • higher memory footprint (topology must be explicitly written) but more freedom • examples: polygonal data, unstructured grid Scientific Visualization Using MATLAB – Summer 2011
Examples of Dataset Types Structured Points (Image Data) – regular in both topology and geometry – examples: lines, pixels, voxels – applications: imaging CT, MRI Rectilinear Grid – regular topology but geometry only partially regular – examples: pixels, voxels Structured Grid (Curvilinear) – regular topology and irregular geometry – examples: quadrilaterals, hexahedron – applications: fluid flow, heat transfer Scientific Visualization Using MATLAB – Summer 2011
Examples of Dataset Types (cont) Polygonal Data – irregular in both topology and geometry – examples: vertices, polyvertices, lines, polygons, triangle strips Unstructured Grid – irregular in both topology and geometry – examples: any combination of cells – applications: finite element analysis, structural design, vibration Scientific Visualization Using MATLAB – Summer 2011
Characteristics of Data is organized into datasets for visualization – Datasets consist of two pieces • organizing structure – points (geometry) – cells (topology) • data attributes associated with the structure – File format derived from organizing structure Data is discrete – Interpolation functions generate data values in between known points Scientific Visualization Using MATLAB – Summer 2011
MATLAB – Data Types Basic data type – The basic data type is the array. – “Arrays in MATLAB are N-dimensional, with an infinite number of trailing singleton dimensions. Trailing singleton dimensions past the second are not displayed or reported on (e. g. , with size). No array has fewer than two dimensions. ” – A vector is an Nx 1 (or 1 XN) array (and a scalar is a 1 x 1 array): – Array dimensions are generally reported in “row by column” order (i. e. , y by x!). Scientific Visualization Using MATLAB - Summer 2011
MATLAB – Data Types Volume Data – Data defined on three-dimensional grids – Two basic types • Scalar volume data • Single data values for each point • Examples: temperature, pressure, density, elevation • Vector volume data • Two or three values for each point (components of a vector) • Magnitude and direction • Examples: velocity, momentum Scientific Visualization Using MATLAB - Summer 2011
Handle graphics, GUIs • “Handle graphics” • Numerical id assigned to figure window and its components • GUI (for menus, sliders, etc. ) Scientific Visualization Using MATLAB - Summer 2011
Figure – All graphical output directed to a graphics window called a figure – Separate from the Command Window – Can contain menus, toolbars, user-interface objects, context menus, axes, or any other type of graphics object. Scientific Visualization Using MATLAB - Summer 2011
Handle Graphics Hierarchy • • Root object Figure object(s) Scientific Visualization Using MATLAB - Summer 2011
Core graphics objects • axes (frame, defines coordinate system) • line • text • rectangle • light • patch (filled polygons) • surface (3 D grid of quadrilaterals) • images (2 D representation of image) Scientific Visualization Using MATLAB - Summer 2011
Code – figure function Command Window f = figure creates a new figure object using default property values. This automatically becomes the current figure and raises it above all other figures on the screen until a new figure is either created or called. Many graphics commands create figures (so, often no need invoke ‘figure’ command). gcf: get current figure(f): make f current figure close all: close all figure windows shg: show graphic window (ESC to return) Scientific Visualization Using MATLAB - Summer 2011
Exercise – figure property list Command Window: figure 1. m f = figure('Name', 'Test Window', 'Position', [100 500 350], 'Menu. Bar', 'none') or f = figure set (f, 'Name', 'Test Window') set (f, 'Position', [100 500 350]) set (f, 'Menu. Bar', 'none') Type get(f, ’Name’) to see f’s ‘Name’ property, or get(f) to see all properties. Tip #1: use ‘more on’ to keep list from scrolling. Tip #2: See ‘Handle Graphics Property Browser’ in doc. Scientific Visualization Using MATLAB - Summer 2011
MATLAB - Viewing control – One can alter the appearance of a graphical scene by adjusting the camera position, changing the perspective, changing the aspect ratio, etc. – Two primary functions: • Positioning the viewpoint to orient the scene – view function • Setting the aspect ratio and relative axis scaling – axis function Scientific Visualization Using MATLAB - Summer 2011
MATLAB – view function view – The viewpoint is specified by defining azimuth and elevation with respect to the axis origin – azimuth is a polar angle in the x-y plane, with positive angles indicating counterclockwise rotation of the viewpoint. Elevation is the angle above or below the x-y plane. Scientific Visualization Using MATLAB - Summer 2011
MATLAB – view function (cont. ) view – MATLAB automatically selects a viewpoint that is determined by whether the plot is 2 -D or 3 -D • For 2 -D plots, the default is azimuth = 0° and elevation = 90° • For 3 -D plots, the default is azimuth = -37. 5° and elevation = 30° – view(2) sets the default 2 D view, with az = 0, el = 90. – view(3) sets the default 3 D view, with az = – 37. 5, el = 30. – view(az, el) or view([az, el]) set the viewing angle for a 3 D view. Scientific Visualization Using MATLAB - Summer 2011
Exercise – view Command Window: view 1 samplefig; view([-20, 25]); Scientific Visualization Using MATLAB - Summer 2011
Exercise – view Command Window: view 1 Figure menu: - Add X, Y labels - Rotate graph - Examine values with datatip - Save figure Scientific Visualization Using MATLAB - Summer 2011
MATLAB – axis function axis – Enables you to adjust the aspect ratio of graphs. – Enables you to adjust the scaling of graphs. – axis([xmin xmax ymin ymax zmin zmax]) sets the limits for the x-axis, y-axis and z-axis of the current axes. – axis vis 3 d freezes aspect ratio properties to enable rotation of 3 -D objects without rescaling. Scientific Visualization Using MATLAB - Summer 2011
Code – axis function Command Window: axis 1 samplefig; view([-20, 25]); axis([0 30 -15 15]); axis vis 3 d; % axis normal; Scientific Visualization Using MATLAB - Summer 2011
MATLAB - Lighting – Enhances the visibility of surface shape and provides a 3 D perspective to your visualization. – Several commands enable you to position light sources and adjust the characteristics of lit objects: • light - creates a light object • lighting - selects a lighting method • material - sets the reflectance properties of lit objects • camlight - creates or moves a light with respect to the camera position • shading - controls the color shading of surface and patch graphic objects Scientific Visualization Using MATLAB - Summer 2011
Exercise – lighting, material, etc. Command Window: lighting 1 samplefig; lighting phong; material (‘shiny’); camlight left; shading interp; Try changing lighting, material, shading, etc. , using command or function syntax. E. g. material dull; or material(‘dull’); Scientific Visualization Using MATLAB - Summer 2011
MATLAB – Vis Algorithms • Modeling – Matrix to Surface – Slicing • Scalar – Color Mapping – Contours / Isosurfaces • Vector – Oriented Glyphs – Streamlines Scientific Visualization Using MATLAB - Summer 2011
MATLAB – modeling algorithms Matrix to Surface – A surface is defined by the z-coordinates of points above a rectangular grid in the x-y plane. – formed by joining adjacent points with straight lines. – useful for visualizing large matrices. – surf(X, Y, Z) creates a shaded surface using Z for the color data as well as surface height. X and Y are vectors or matrices defining the x and y components of the surface. Scientific Visualization Using MATLAB - Summer 2011
Exercise – surf, meshgrid, bps, etc. Command Window: surf 1 [step through] [X, Y] = meshgrid(-3: 0. 25: 3); Z = peaks(X, Y); s = surf(X, Y, Z); view(3); axis([-3 3 -10 10]); grid on; lighting phong; camlight left; peaks is a function of two variables, obtained by translating and scaling Gaussian distributions meshgrid(x, y) transforms the domain specified by vectors x and y into arrays X and Y, which can be used to evaluate functions of two variables and three-dimensional mesh/surface plots. meshgrid(x) is the same as [X, Y] = meshgrid(x, x). Scientific Visualization Using MATLAB - Summer 2011
MATLAB – modeling algorithms Slicing – A slice is a "cross-section" of the dataset. – Any kind of surface can be used to slice the volume. – The simplest technique is to use a plane to define the cutting surface. – slice (X, Y, Z, V, sx, sy, sz) draws slices of the volume V along the x, y, z directions in the volume V at the points in the vectors sx, sy, and sz. X, Y, and Z are 3 D arrays specifying the coordinates for V. – The color at each point is determined by 3 -D interpolation into the volume V. Scientific Visualization Using MATLAB - Summer 2011
Exercise – flow, slice Command Window: slice 1 [x, y, z, v] = flow; xslice = 5; yslice = 0; zslice = 0; s = slice(x, y, z, v, xslice, yslice, zslice); view(3); axis on; grid on; lighting phong; camlight('left'); shading interp; The flow dataset represents the speed profile of a submerged jet within an infinite tank. Tip: use viewedge_middle(v) for custom datatip. For the adventurous, try sliceomatic(v). Scientific Visualization Using MATLAB - Summer 2011
MATLAB – scalar algorithms Color Mapping – Each scalar value in data set is mapped through a lookup table to a specific color. – The color lookup table is called the colormap: • Three-column 2 -D matrix • Each row of the matrix defines a single color by specifying three values in the range of zero to one (RGB components). • Created with either array operations or with one of the several color table generating functions (e. g. , jet, hsv, hot, cool, summer, and gray). (Do ‘doc colormap to see current list. ) • colormap(map) sets the colormap to the matrix map. Scientific Visualization Using MATLAB - Summer 2011
Code – colormap function Command Window: colormap 1 [x, y, z, v] = flow; xslice = 5; yslice = 0; zslice = 0; s = slice(x, y, z, v, xslice, yslice, zslice); view(3); axis([0 10 -4 4 -3 3]); grid on; colormap (flipud(jet(64))); colorbar('vertical'); shading interp; Pop quiz: how would you reverse the order of the entries in the colormap after running colormap 1? Scientific Visualization Using MATLAB - Summer 2011
MATLAB – colormap editor If you want even more control over the color mapping, you can use the colormap editor. You open the colormap editor by selecting Colormap from the figure’s Edit menu. Tip: to view a list of colormaps, see ‘Tools’ Try: % [x y] = meshgrid(1: 64); % image(x); Scientific Visualization Using MATLAB - Summer 2011
MATLAB – scalar algorithms Contours / Isosurfaces – Construct a boundary between distinct regions in the data. – contours are lines or surfaces of constant scalar value. – isolines for two-dimensional data and isosurfaces for three-dimensional data. – contour(X, Y, Z, v) draws a contour plot of matrix Z with isolines at the data values specified in the vector v. – isosurface(X, Y, Z, V, isovalue) computes isosurface data from the volume data V at the isosurface value specified in isovalue. The isosurface function connects points that have the specified value the same way isolines connect points of equal elevation. Scientific Visualization Using MATLAB - Summer 2011
Code – contour function Command Window: contour 1 [X, Y] = meshgrid(-3: 0. 25: 3); Z = peaks(X, Y); isovalues = (-3. 0: 0. 5: 3. 0); [C h] = contour(X, Y, Z, isovalues); grid on; Pop quiz: what are contour’s return values? Pop quiz 2: Compare with imagesc(Z) in another figure window. Why are the colors different? Scientific Visualization Using MATLAB - Summer 2011
Ex. – isosurface step-through Command Window: isosurface 1 [x, y, z, v] = flow; isovalue = -1; purple = [1. 0 0. 5 1. 0]; i = isosurface(x, y, z, v, isovalue); p = patch(i); isonormals(x, y, z, v, p); set(p, 'Face. Color', purple, 'Edge. Color', 'none'); view([-10 40]); grid on; l = light('Position', [-10, -2, 20]); lighting gouraud; patch is the low-level graphics function that creates patch graphics objects. A patch object is one or more polygons defined by the coordinates of its vertices. Scientific Visualization Using MATLAB - Summer 2011 Quiz: how would you change the light color?
Interactive data exploration Editor Window: isosurface 1 To explore different isosurface values, highlight the ‘-1’ in this line: isovalue = -1; then use the %1. 1 button repeatedly to see isosurfaces of successively smaller value. When you’ve gotten to -0. 03 or so, rotate the model, then turn on a camlight. Scientific Visualization Using MATLAB - Summer 2011
MATLAB – vector algorithms Oriented Glyphs – Draw an oriented, scaled glyph for each vector. – Glyphs are polygonal objects such as cones or arrows. – Orientation and scale of glyph indicate the direction and magnitude of the vector. – Glyphs may be colored according to vector magnitude or some other scalar value. – coneplot(X, Y, Z, U, V, W, Cx, Cy, Cz) plots vectors as cones or arrows. • X, Y, Z define the coordinates for the vector field • U, V, W define the vector field • Cx, Cy, Cz define the location of the cones in the vector field • coneplot(. . . , 'quiver') draws arrows instead of cones. Scientific Visualization Using MATLAB - Summer 2011
Code – coneplot function Command Window: coneplot 1 load wind; xmin = min(x(: )); xmax = max(x(: )); ymin = min(y(: )); ymax = max(y(: )); zmin = min(z(: )); zmax = max(z(: )); scale = 4; [cx cy cz] = meshgrid(xmin: 5: xmax, ymin: 5: ymax, zmin: 2: zmax); coneplot(x, y, z, u, v, w, cx, cy, cz, scale, 'quiver'); view([-35 60]); grid off; The wind dataset represents air currents over North America. The dataset contains six 3 -D arrays: x, y, and z are coordinate arrays which specify the coordinates of each point in the volume and u, v, and w are the vector components for each point in the volume. Scientific Visualization Using MATLAB - Summer 2011
Ex. – improved coneplot Command Window: coneplot# 1. Use ‘cone’ instead of ‘quiver’: coneplot 2 2. Use color to indicate windspeed: coneplot 3 3. Use +1 button to move up one xy plane at a time by incrementing z value: [cx cy cz] = meshgrid(xmin: 2: xmax, ymin: 2: ymax, 1); Scientific Visualization Using MATLAB - Summer 2011
MATLAB – vector algorithms Streamlines – The path a massless particle takes flowing through a velocity field (i. e. vector field) – Can be used to convey the structure of a vector field by providing a snapshot of the flow at a given instant in time. – Multiple streamlines can be created to explore interesting features in the field. – Computed via numerical integration (integrating product of velocity times delta T). – streamline(X, Y, Z, U, V, W, startx, starty, startz) draws stream lines from the vector volume data. • X, Y, Z define the coordinates for the vector field • U, V, W define the vector field • startx, starty, startz define the starting positions of the streams Scientific Visualization Using MATLAB - Summer 2011
Code – streamline function Command Window: streamline 1 load wind; xmin = min(x(: )); xmax = max(x(: )); ymin = min(y(: )); ymax = max(y(: )); zmin = min(z(: )); zmax = max(z(: )); purple = [1. 0 0. 5 1. 0]; [sx sy sz] = meshgrid(xmin, ymin: 10: ymax, zmin: 2: zmax); h = streamline(x, y, z, u, v, w, sx, sy, sz); set(h, 'Line. Width', 1, 'Color', purple); view([-40 50]); grid off; Scientific Visualization Using MATLAB - Summer 2011
Interactive data exploration Command Window: streamline 2_interactive Use % 1. 1 and X 1. 1 to adjust zval, and save_camera_struct to save current camera position and viewing angle. Try to find the two funnels. Scientific Visualization Using MATLAB - Summer 2011
MATLAB - Resources IS&T tutorials – Introduction to MATLAB www. bu. edu/tech/research/training/tutorials/MATLAB/ – Using MATLAB to Visualize Scientific Data www. bu. edu/tech/research/training/tutorials/visualization-with-MATLAB/ Websites – www. mathworks. com/products/MATLAB/ – www. mathworks. com/access/helpdesk/help/techdoc/index. html – www. mathworks. com/academia/student_center/tutorials Wiki – http: //MATLABwiki. mathworks. com/ Scientific Visualization Using MATLAB - Summer 2011
Questions? Tutorial survey: - http: //scv. bu. edu/survey/tutorial_evaluation. html Scientific Visualization Using MATLAB – Summer 2011
- Slides: 50