File:Level set method.jpg
Summary
| Description | Illustration of en:Level set method. |
| Date | 25 November 2004 (original upload date) |
| Source | Transferred from en.wikipedia to Commons. |
| Author | Olegalexandrov at English Wikipedia |
Licensing
| This work has been released into the public domain by its author, Olegalexandrov at English Wikipedia. This applies worldwide. In some countries this may not be legally possible; if so: Olegalexandrov grants anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law. |
MATLAB source code (public domain)
function level_set_method()
figure(1); clf; % pop up a figure, and clean it up
for i=1:3 % make a loop to draw the six pictures in pairs
level_disp(i);
end
print('-djpeg100', '-r100', 'level_set_method.jpg') % save to file.
function level_disp(p)
Lx=2.5; Ly=2.5; % box is [-Lx Lx] x [-Ly, Ly]
N=60; % number of points (don't make it big, code will be slow)
heights=[0.7+eps, 0.00001, -0.7+eps]; % cut the surface at these heights
height=heights(p); % current cut
[X, Y]=meshgrid(-Lx:(1/N):Lx, -Ly:(1/N):Ly); % X and Y coordinates
Z=height-0.5*(X-1.78).*X.^2.*(X+1.78)-Y.^2; % Z=f(X, Y) -surface
lowest=-4;
[m, n]=size(Z);
for i=1:m
for j=1:n
if Z(i, j)< lowest; % truncate the surface somewhere
Z(i, j)=NaN;
end
end
end
% draw the surface and the plane cut
figure(1); subplot('Position', [(p-1)/3, 0., 0.33, 0.5]); hold on;
surf(X, Y, Z, 'FaceColor','red', 'EdgeColor','none', 'FaceAlpha', 1);
surf(X, Y, zeros(m, n), 'FaceColor','blue', 'EdgeColor','none', 'FaceAlpha', 0.3);
camlight left;lighting phong; % make nice lightning
axis([-Lx Lx -Ly Ly lowest 1.8]); axis equal; axis off; %the coordinate box
view(-23, 34) % angle of view (polar coordinates)
% draw the shape (cross-section)
figure(1); subplot('Position', [(p-1)/3, 0.5, 0.33, 0.5]); % subwindow
[c, stuff] = contour(X, Y, Z, [0, 0]); % draw the contours.
l=c(2, 1);
x=c(1,2:(l+1)); y=c(2,2:(l+1)); % get x and y of contours
H=fill(x, y, 0.6*[1, 1, 1]); set(H, 'EdgeColor', 'none'); % draw the shape
[u, v]=size(c);
if v > l+2 % special case: two connected components
x=c(1,(l+3):(2*l)); y=c(2,(l+3):(2*l)); % contours
hold on; % hold the graph for the second component
H=fill(x, y, 0.6*[1, 1, 1]); set(H, 'EdgeColor', 'none');
end
axis equal; axis off; axis([-Lx Lx -Ly Ly]); % frame size
Original upload log
The original description page was here. All following user names refer to en.wikipedia.
- 2004-11-25 03:20 Olegalexandrov 800×600×8 (90808 bytes) Illustration of level set method. {{PD}}
This math image could be re-created using vector graphics as an SVG file. This has several advantages; see Commons:Media for cleanup for more information. If an SVG form of this image is available, please upload it and afterwards replace this template with {{vector version available|new image name}}.It is recommended to name the SVG file “Level set method.svg”—then the template Vector version available (or Vva) does not need the new image name parameter. |
