LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

3D Isosurface plot

Hi,

is there a vi for isosurface graphs in LabView? I have a 3D matrix and would like to have a surface plotted that intersects points of equal intensity. If not, is there a way to use a parametric 3D-graph for this?

Thanks in advance,
Matthias
0 Kudos
Message 1 of 6
(4,129 Views)
Hi Matthias,
 
What is a "isosurface graph" ?
 
Could you post an image of what this looks like?
 
Ben
Retired Senior Automation Systems Architect with Data Science Automation LabVIEW Champion Knight of NI and Prepper LinkedIn Profile YouTube Channel
0 Kudos
Message 2 of 6
(4,124 Views)
Hi!

An isosurface plot in 2D is just the plot of a specific contour line, that is, a curve connecting points of equal values. In 3D a contour line becomes a surface.

In short, I have a 3D array representing a function f(x,y,z), that is, the array element at x,y,z contains a certain value f(x,y,z). I want to plot all points for which f(x,y,z)=m holds (and only those) and ideally have a surface interconnecting them.

For example, imagine a series of 2D arrays, where the elements of each array are 1 when inside a circle of a certain size and 0 otherwise. These arrays stacked on top of each other yield a 3D array whose elements are 1 when inside or on a sphere and 0 otherwise. A 3D plot would look like this:


That would be the first step. Now, if the surface of the sphere were blurred, array values would not drop from 1 to 0 while leaving the sphere but instead they would slowly decrease from 1 to 0. There is no well-defined surface to plot here. But one could take all elements that are, say 0.9, connect them and plot the resulting surface in order to get a  good impression of the original sphere.

Other examples of iso-surface plots are molecular orbitals (isosurface plots of the threedimensional electron density of an atom) or MRI images.

Hope that was helpful...
Matthias
0 Kudos
Message 3 of 6
(4,122 Views)

I am not sure but this may help.

Starting at reply #7 of this thread

http://forums.ni.com/ni/board/message?board.id=170&message.id=143663&jump=true

I talk about how to do a lot of exotic stuff with the 3-d graph.

Does that help?

Ben

Retired Senior Automation Systems Architect with Data Science Automation LabVIEW Champion Knight of NI and Prepper LinkedIn Profile YouTube Channel
0 Kudos
Message 4 of 6
(4,115 Views)
Hm, I use LabView 7.0, but it looks like you do a surface graph with x and y being related to azimuth and elevation and z being measured data. The array is 3D, but essentially it is a function of two variables, azimuth and elevation. I have a function depending on three variables.

Matthias

0 Kudos
Message 5 of 6
(4,112 Views)
Hi Matthias,
 
I am not sure if I am helping or not. You wrote;
 
"
Hm, I use LabView 7.0, but it looks like you do a surface graph with x and y being related to azimuth and elevation and z being measured data. The array is 3D, but essentially it is a function of two variables, azimuth and elevation. I have a function depending on three variables.
"
 
1) The code illustated should be the same in LV 7.0 as is illustrated.
 
 
2) That example is using multiple plots to achieve the final result.
 
The first "For Loop" is plotting multiple curves by passing three 1-d arrays where coresponding values of each array represt a triplet (X-Y-Z values) for each point the curve should pass through. The result curve is plotted starting with the first triplet (first element in each array) to the last. The "W" vector is omitted because I wanted each curve to have a unique color to make it easy to distinguish between the curves.
 
After competing all of the curves I then add another plot that that is a parametric surface. In this case the dat is presented as 2-d array and I alos specify the W vector so that I can control the color of the surface.
 
THe "2d" array (like the 1d array) contains quadruplets (? X-Y-Z-W) values for each point on the resulting surface. The arrangement of the quads within the 2-d array tells the 3-d graph which quads are adjacent to each other. If you viewed the surface as a grid with lines connceting adjacent points you would see a line from (X00, Y00, Z00, W0) [where X00 is the 0,0 element of the X-Matrix] to (X01, Y01, Z01, W01) and another connected to (X10, Y10, Z10, W10) etc. So the 2-d array only helps the 3d graph figure what points in scace should be connedted to each other.
 
I hope this is helping!
 
Ben
 

Message Edited by Ben on 07-20-2006 11:50 AM

Retired Senior Automation Systems Architect with Data Science Automation LabVIEW Champion Knight of NI and Prepper LinkedIn Profile YouTube Channel
0 Kudos
Message 6 of 6
(4,101 Views)