annotate scripts/plot/isonormals.m @ 10846:a4f482e66b65

Grammarcheck more of the documentation. Use @noindent macro appropriately. Limit line length to 80 characters.
author Rik <octave@nomad.inbox5.com>
date Sun, 01 Aug 2010 20:22:17 -0700 (2010-08-02)
parents 693e22af08ae
children 2c356a35d7f5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9110
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
1 ## Copyright (C) 2009 Martin Helm
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
2 ##
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
3 ## This program is free software; you can redistribute it and/or modify
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
4 ## it under the terms of the GNU General Public License as published by
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
5 ## the Free Software Foundation; either version 3 of the License, or
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
6 ## (at your option) any later version.
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
7 ##
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
8 ## This program is distributed in the hope that it will be useful,
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
9 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
10 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
11 ## GNU General Public License for more details.
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
12 ##
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
13 ## You should have received a copy of the GNU General Public License
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
14 ## along with this program; if not, see http://www.gnu.org/licenses/gpl.html.
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
15
9119
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
16 ## -*- texinfo -*-
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
17 ## @deftypefn {Function File} {[@var{n}] =} isonormals (@var{val}, @var{v})
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
18 ## @deftypefnx {Function File} {[@var{n}] =} isonormals (@var{val}, @var{p})
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
19 ## @deftypefnx {Function File} {[@var{n}] =} isonormals (@var{x}, @var{y}, @var{z}, @var{val}, @var{v})
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
20 ## @deftypefnx {Function File} {[@var{n}] =} isonormals (@var{x}, @var{y}, @var{z}, @var{val}, @var{p})
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
21 ## @deftypefnx {Function File} {[@var{n}] =} isonormals (@dots{}, "negate")
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
22 ## @deftypefnx {Function File} isonormals (@dots{}, @var{p})
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
23 ##
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
24 ## If called with one output argument and the first input argument
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
25 ## @var{val} is a three--dimensional array that contains the data for an
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
26 ## isosurface geometry and the second input argument @var{v} keeps the
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
27 ## vertices of an isosurface then return the normals @var{n} in form of
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
28 ## a matrix with the same size than @var{v} at computed points
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
29 ## @command{[x, y, z] = meshgrid (1:l, 1:m, 1:n)}. The output argument
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
30 ## @var{n} can be taken to manually set @var{VertexNormals} of a patch.
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
31 ##
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
32 ## If called with further input arguments @var{x}, @var{y} and @var{z}
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
33 ## which are three--dimensional arrays with the same size than @var{val}
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
34 ## then the volume data is taken at those given points. Instead of the
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
35 ## vertices data @var{v} a patch handle @var{p} can be passed to this
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
36 ## function.
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
37 ##
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
38 ## If given the string input argument "negate" as last input argument
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
39 ## then compute the reverse vector normals of an isosurface geometry.
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
40 ##
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
41 ## If no output argument is given then directly redraw the patch that is
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
42 ## given by the patch handle @var{p}.
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
43 ##
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10635
diff changeset
44 ## For example:
10846
a4f482e66b65 Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents: 10821
diff changeset
45 ##
9119
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
46 ## @example
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
47 ## function [] = isofinish (p)
10226
2884758e265b Replace dataaspectratio props with plotboxaspectratio props.
Ben Abbott <bpabbott@mac.com>
parents: 9119
diff changeset
48 ## set (gca, "PlotBoxAspectRatioMode","manual","PlotBoxAspectRatio",[1 1 1]);
9119
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
49 ## set (p, "VertexNormals", -get(p,"VertexNormals")); ## Revert normals
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
50 ## set (p, "FaceColor", "interp");
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
51 ## ## set (p, "FaceLighting", "phong");
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
52 ## ## light ("Position", [1 1 5]); ## Available with JHandles
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
53 ## endfunction
9110
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
54 ##
9119
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
55 ## N = 15; ## Increase number of vertices in each direction
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
56 ## iso = .4; ## Change isovalue to .1 to display a sphere
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
57 ## lin = linspace (0, 2, N);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
58 ## [x, y, z] = meshgrid (lin, lin, lin);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
59 ## c = abs ((x-.5).^2 + (y-.5).^2 + (z-.5).^2);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
60 ## figure (); ## Open another figure window
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
61 ##
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
62 ## subplot (2, 2, 1); view (-38, 20);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
63 ## [f, v, cdat] = isosurface (x, y, z, c, iso, y);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
64 ## p = patch ("Faces", f, "Vertices", v, "FaceVertexCData", cdat, \
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10226
diff changeset
65 ## "FaceColor", "interp", "EdgeColor", "none");
9119
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
66 ## isofinish (p); ## Call user function isofinish
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
67 ##
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
68 ## subplot (2, 2, 2); view (-38, 20);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
69 ## p = patch ("Faces", f, "Vertices", v, "FaceVertexCData", cdat, \
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10226
diff changeset
70 ## "FaceColor", "interp", "EdgeColor", "none");
9119
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
71 ## isonormals (x, y, z, c, p); ## Directly modify patch
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
72 ## isofinish (p);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
73 ##
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
74 ## subplot (2, 2, 3); view (-38, 20);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
75 ## p = patch ("Faces", f, "Vertices", v, "FaceVertexCData", cdat, \
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10226
diff changeset
76 ## "FaceColor", "interp", "EdgeColor", "none");
9119
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
77 ## n = isonormals (x, y, z, c, v); ## Compute normals of isosurface
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
78 ## set (p, "VertexNormals", n); ## Manually set vertex normals
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
79 ## isofinish (p);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
80 ##
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
81 ## subplot (2, 2, 4); view (-38, 20);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
82 ## p = patch ("Faces", f, "Vertices", v, "FaceVertexCData", cdat, \
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10226
diff changeset
83 ## "FaceColor", "interp", "EdgeColor", "none");
9119
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
84 ## isonormals (x, y, z, c, v, "negate"); ## Use reverse directly
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
85 ## isofinish (p);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
86 ## @end example
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
87 ##
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
88 ## @seealso {isosurface, isocolors, isocaps, marching_cube}
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
89 ##
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
90 ## @end deftypefn
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
91
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
92 ## Author: Martin Helm <martin@mhelm.de>
9110
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
93
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
94 function varargout = isonormals(varargin)
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
95 na = nargin;
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
96 negate = false;
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
97 if (ischar (varargin{nargin}))
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
98 na = nargin-1;
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
99 if (strcmp (lower (varargin{nargin}), "negate"))
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
100 negate = true;
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
101 else
10635
d1978e7364ad Print name of function in error() string messages.
Rik <octave@nomad.inbox5.com>
parents: 10549
diff changeset
102 error ("isonormals: Unknown option '%s'", varargin{nargin});
9110
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
103 endif
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
104 endif
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
105 switch na
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
106 case 2
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
107 c = varargin{1};
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
108 vp = varargin{2};
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
109 x = 1:size (c, 2);
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
110 y = 1:size (c, 1);
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
111 z = 1:size (c, 3);
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
112 case 5
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
113 x = varargin{1};
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
114 y = varargin{2};
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
115 z = varargin{3};
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
116 c = varargin{4};
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
117 vp = varargin{5};
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
118 otherwise
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
119 print_usage ();
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
120 endswitch
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
121 if (ismatrix (vp) && size (vp,2) == 3)
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
122 pa = [];
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
123 v = vp;
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
124 elseif (ishandle (vp))
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
125 pa = vp;
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
126 v = get (pa, "Vertices");
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
127 else
10635
d1978e7364ad Print name of function in error() string messages.
Rik <octave@nomad.inbox5.com>
parents: 10549
diff changeset
128 error ("isonormals: Last argument is not a vertex list or a patch handle");
9110
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
129 endif
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
130 if (negate)
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
131 normals = -__interp_cube__ (x, y, z, c, v, "normals");
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
132 else
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
133 normals = __interp_cube__ (x, y, z, c, v, "normals");
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
134 endif
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
135 switch nargout
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
136 case 0
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
137 if (!isempty (pa))
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
138 set (pa, "VertexNormals", normals);
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
139 endif
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
140 case 1
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
141 varargout = {normals};
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
142 otherwise
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
143 print_usage ();
22ae6b3411a7 Add isocolor, isonormals and isosurface functions (For Martin Helm). Add 3D filled triangular patches and the trisurf function
David Bateman <dbateman@free.fr>
parents:
diff changeset
144 endswitch
9119
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
145 endfunction
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
146
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
147 %!test
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
148 %! [x, y, z] = meshgrid (0:.5:2, 0:.5:2, 0:.5:2);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
149 %! c = abs ((x-.5).^2 + (y-.5).^2 + (z-.5).^2);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
150 %! [f, v, cdat] = isosurface (x, y, z, c, .4, y);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
151 %! n = isonormals (x, y, z, c, v);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
152 %! assert (size (v), size (n));
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
153 %!test
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
154 %! [x, y, z] = meshgrid (0:.5:2, 0:.5:2, 0:.5:2);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
155 %! c = abs ((x-.5).^2 + (y-.5).^2 + (z-.5).^2);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
156 %! [f, v, cdat] = isosurface (x, y, z, c, .4, y);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
157 %! np = isonormals (x, y, z, c, v);
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
158 %! nn = isonormals (x, y, z, c, v, "negate");
3b810beddfa6 Added help texts and tests.
Thomas Treichl <Thomas.Treichl@gmx.net>
parents: 9110
diff changeset
159 %! assert (all (np == -nn));