annotate scripts/plot/draw/isosurface.m @ 22231:01ba6ebc52e4

Add function "reducevolume" (patch #8856). * scripts/plot/draw/reducevolume.m: New function. * scripts/plot/draw/module.mk: Add to build system. * __unimplemented__.m: Remove "reducevolume" from list. * NEWS: Announce new function. * doc/interpreter/plot.txi: Add to documentation. * scripts/plot/draw/isosurface.m: Add "reducevolume" to @seealso.
author Markus Muetzel <markus.muetzel@gmx.de>
date Mon, 18 Jul 2016 19:49:39 +0200
parents e50536734855
children a8fd02bc895b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21173
5ecdcc6320d9 Fix regressions caused by ismatrix definition change (partial fix bug #47036).
Colin Macdonald <cbm@m.fsf.org>
parents: 20173
diff changeset
1 ## Copyright (C) 2009-2016 Martin Helm
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
2 ##
11104
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
3 ## This file is part of Octave.
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
4 ##
11104
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
6 ## under the terms of the GNU General Public License as published by
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
8 ## your option) any later version.
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
9 ##
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
13 ## General Public License for more details.
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
14 ##
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 ## You should have received a copy of the GNU General Public License
11104
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
17 ## <http://www.gnu.org/licenses/>.
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
18
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
19 ## -*- texinfo -*-
20852
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20173
diff changeset
20 ## @deftypefn {} {[@var{fv}] =} isosurface (@var{val}, @var{iso})
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
21 ## @deftypefnx {} {[@var{fv}] =} isosurface (@var{val})
20852
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20173
diff changeset
22 ## @deftypefnx {} {[@var{fv}] =} isosurface (@var{x}, @var{y}, @var{z}, @var{val}, @var{iso})
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
23 ## @deftypefnx {} {[@var{fv}] =} isosurface (@var{x}, @var{y}, @var{z}, @var{val})
20852
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20173
diff changeset
24 ## @deftypefnx {} {[@var{fvc}] =} isosurface (@dots{}, @var{col})
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
25 ## @deftypefnx {} {[@var{fv}] =} isosurface (@dots{}, "noshare")
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
26 ## @deftypefnx {} {[@var{fv}] =} isosurface (@dots{}, "verbose")
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
27 ## @deftypefnx {} {[@var{f}, @var{v}] =} isosurface (@dots{})
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
28 ## @deftypefnx {} {[@var{f}, @var{v}, @var{c}] =} isosurface (@dots{})
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
29 ## @deftypefnx {} {} isosurface (@dots{})
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
30 ##
20173
777f26aa8e3e doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
31 ## Calculate isosurface of 3-D data.
777f26aa8e3e doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
32 ##
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
33 ## If called with one output argument and the first input argument
12529
0579a13f29a1 Add isocolors, isonormals, isosurface functions to documentation.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
34 ## @var{val} is a three-dimensional array that contains the data of an
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
35 ## isosurface geometry and the second input argument @var{iso} keeps 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
36 ## isovalue as a scalar value then return a structure array @var{fv}
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
37 ## that contains the fields @var{faces} and @var{vertices} at computed
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
38 ## points @command{[x, y, z] = meshgrid (1:l, 1:m, 1:n)}. The output
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
39 ## argument @var{fv} can directly be taken as an input argument for the
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
40 ## @command{patch} function.
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
41 ##
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
42 ## If @var{iso} is omitted or empty, a "good" value for an isosurface is
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
43 ## determined from @var{val}.
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
44 ##
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
45 ## If called with further input arguments @var{x}, @var{y} and @var{z}
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
46 ## which are three--dimensional arrays with the same size as @var{val} or
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
47 ## vectors with lengths corresponding to the dimensions of @var{val}, then the
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
48 ## volume data is taken at those given points. If @var{x}, @var{y} or @var{z}
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
49 ## are empty, the grid corresponds to the indices in the respective direction
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
50 ## (see @command{meshgrid}).
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
51 ##
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
52 ## If called with the input argument @var{col} which is a
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
53 ## three-dimensional array of the same size as @var{val}, take
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 ## those values for the interpolation of coloring the isosurface
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
55 ## geometry. In this case, the structure array @var{fv} has the additional field
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
56 ## @var{facevertexcdata}.
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
57 ##
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
58 ## If given the string input argument @qcode{"noshare"}, vertices might be
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
59 ## returned multiple times for different faces. The default behavior is to
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
60 ## search vertices shared by adjacent faces with @command{unique} which might be
22072
7680225527ef maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 22038
diff changeset
61 ## time consuming.
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
62 ## The string input argument @qcode{"verbose"} is only for compatibility and
22072
7680225527ef maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 22038
diff changeset
63 ## has no effect.
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
64 ## The string input arguments must be passed after the other arguments.
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
65 ##
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
66 ## If called with two or three output arguments, return the information about
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
67 ## the faces @var{f}, vertices @var{v} and color data @var{c} as separate arrays
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
68 ## instead of a single structure array.
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
69 ##
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
70 ## If called with no output argument, the isosurface geometry is directly
22162
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
71 ## processed with the @command{patch} command and a light object is added to
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
72 ## the axes if not yet present.
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
73 ##
10846
a4f482e66b65 Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents: 10842
diff changeset
74 ## For example,
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
75 ##
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
76 ## @example
9758
09da0bd91412 Periodic grammar check of Octave documentation files to ensure common format
Rik <rdrider0-list@yahoo.com>
parents: 9110
diff changeset
77 ## @group
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
78 ## [x, y, z] = meshgrid (1:5, 1:5, 1: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
79 ## val = rand (5, 5, 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
80 ## isosurface (x, y, z, val, .5);
9758
09da0bd91412 Periodic grammar check of Octave documentation files to ensure common format
Rik <rdrider0-list@yahoo.com>
parents: 9110
diff changeset
81 ## @end group
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
82 ## @end example
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
83 ##
10846
a4f482e66b65 Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents: 10842
diff changeset
84 ## @noindent
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
85 ## will directly draw a random isosurface geometry in a graphics window.
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
86 ##
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
87 ## Another example for an isosurface geometry with different additional
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
88 ## coloring
13929
9cae456085c2 Grammarcheck of documentation before 3.6.0 release.
Rik <octave@nomad.inbox5.com>
parents: 12974
diff changeset
89 ## @c Set example in small font to prevent overfull line
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
90 ##
12974
6590446c2498 doc: Correct Texinfo overfull hbox instances.
Rik <octave@nomad.inbox5.com>
parents: 12529
diff changeset
91 ## @smallexample
6590446c2498 doc: Correct Texinfo overfull hbox instances.
Rik <octave@nomad.inbox5.com>
parents: 12529
diff changeset
92 ## N = 15; # Increase number of vertices in each direction
6590446c2498 doc: Correct Texinfo overfull hbox instances.
Rik <octave@nomad.inbox5.com>
parents: 12529
diff changeset
93 ## iso = .4; # Change isovalue to .1 to display a sphere
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
94 ## lin = linspace (0, 2, N);
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 ## [x, y, z] = meshgrid (lin, lin, lin);
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
96 ## val = abs ((x-.5).^2 + (y-.5).^2 + (z-.5).^2);
12974
6590446c2498 doc: Correct Texinfo overfull hbox instances.
Rik <octave@nomad.inbox5.com>
parents: 12529
diff changeset
97 ## figure (); # Open another figure window
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
98 ##
14327
4d917a6a858b doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
99 ## subplot (2,2,1); view (-38, 20);
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
100 ## [f, v] = isosurface (x, y, z, val, iso);
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
101 ## p = patch ("Faces", f, "Vertices", v, "EdgeColor", "none");
14327
4d917a6a858b doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
102 ## set (gca, "PlotBoxAspectRatioMode", "manual", ...
12974
6590446c2498 doc: Correct Texinfo overfull hbox instances.
Rik <octave@nomad.inbox5.com>
parents: 12529
diff changeset
103 ## "PlotBoxAspectRatio", [1 1 1]);
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
104 ## isonormals (x, y, z, val, p)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
105 ## set (p, "FaceColor", "green", "FaceLighting", "gouraud");
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
106 ## light ("Position", [1 1 5]);
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
107 ##
14327
4d917a6a858b doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
108 ## subplot (2,2,2); view (-38, 20);
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
109 ## p = patch ("Faces", f, "Vertices", v, "EdgeColor", "blue");
14327
4d917a6a858b doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
110 ## set (gca, "PlotBoxAspectRatioMode", "manual", ...
12974
6590446c2498 doc: Correct Texinfo overfull hbox instances.
Rik <octave@nomad.inbox5.com>
parents: 12529
diff changeset
111 ## "PlotBoxAspectRatio", [1 1 1]);
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
112 ## isonormals (x, y, z, val, p)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
113 ## set (p, "FaceColor", "none", "EdgeLighting", "gouraud");
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
114 ## light ("Position", [1 1 5]);
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
115 ##
14327
4d917a6a858b doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
116 ## subplot (2,2,3); view (-38, 20);
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
117 ## [f, v, c] = isosurface (x, y, z, val, iso, y);
14327
4d917a6a858b doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
118 ## p = patch ("Faces", f, "Vertices", v, "FaceVertexCData", c, ...
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
119 ## "FaceColor", "interp", "EdgeColor", "none");
14327
4d917a6a858b doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
120 ## set (gca, "PlotBoxAspectRatioMode", "manual", ...
12974
6590446c2498 doc: Correct Texinfo overfull hbox instances.
Rik <octave@nomad.inbox5.com>
parents: 12529
diff changeset
121 ## "PlotBoxAspectRatio", [1 1 1]);
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
122 ## isonormals (x, y, z, val, p)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
123 ## set (p, "FaceLighting", "gouraud");
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
124 ## light ("Position", [1 1 5]);
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
125 ##
14327
4d917a6a858b doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
126 ## subplot (2,2,4); view (-38, 20);
4d917a6a858b doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
127 ## p = patch ("Faces", f, "Vertices", v, "FaceVertexCData", c, ...
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
128 ## "FaceColor", "interp", "EdgeColor", "blue");
14327
4d917a6a858b doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
129 ## set (gca, "PlotBoxAspectRatioMode", "manual", ...
12974
6590446c2498 doc: Correct Texinfo overfull hbox instances.
Rik <octave@nomad.inbox5.com>
parents: 12529
diff changeset
130 ## "PlotBoxAspectRatio", [1 1 1]);
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
131 ## isonormals (x, y, z, val, p)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
132 ## set (p, "FaceLighting", "gouraud");
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
133 ## light ("Position", [1 1 5]);
12974
6590446c2498 doc: Correct Texinfo overfull hbox instances.
Rik <octave@nomad.inbox5.com>
parents: 12529
diff changeset
134 ## @end smallexample
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
135 ##
22231
01ba6ebc52e4 Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents: 22162
diff changeset
136 ## @seealso{isonormals, isocolors, smooth3, reducevolume}
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
137 ## @end deftypefn
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
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 ## Author: Martin Helm <martin@mhelm.de>
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
22142
62208397b99e Add function "smooth3" (patch #8864).
Markus Muetzel <markus.muetzel@gmx.de>
parents: 22072
diff changeset
141 ## FIXME: Add support for string input argument "verbose"
62208397b99e Add function "smooth3" (patch #8864).
Markus Muetzel <markus.muetzel@gmx.de>
parents: 22072
diff changeset
142 ## (needs changes to __marching_cube__.m)
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
143
14868
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
144 function varargout = isosurface (varargin)
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
145
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
146 if (nargin < 1 || nargin > 8 || nargout > 3)
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
147 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
148 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
149
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
150 [x, y, z, val, iso, colors, noshare, verbose] = __get_check_isosurface_args__ (nargout, varargin{:});
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
151
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
152 calc_colors = ! isempty (colors);
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
153 if (calc_colors)
19833
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19700
diff changeset
154 [fvc.faces, fvc.vertices, fvc.facevertexcdata] = ...
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19700
diff changeset
155 __marching_cube__ (x, y, z, val, iso, colors);
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
156 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
157 [fvc.faces, fvc.vertices] = __marching_cube__ (x, y, z, val, iso);
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
158 endif
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
159
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
160 if (isempty (fvc.vertices) || isempty (fvc.faces))
17078
18137205f57d isosurface.m: Update to new version of newplot().
Rik <rik@octave.org>
parents: 16839
diff changeset
161 warning ("isosurface: triangulation is empty");
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
162 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
163
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
164 if (!noshare)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
165 [fvc.faces, fvc.vertices, J] = __unite_shared_vertices__ (fvc.faces, fvc.vertices);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
166
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
167 if (calc_colors)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
168 fvc.facevertexcdata(J) = []; # share very close vertices
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
169 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
170 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
171
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
172 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
173 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
174 ## plot the calculated surface
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
175 if (calc_colors)
22162
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
176 fc = fvc.facevertexcdata;
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
177 else
22162
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
178 fc = iso;
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
179 endif
22162
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
180 ## FIXME: Matlab uses "EdgeColor", "none". But that would look odd
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
181 ## with gnuplot.
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
182 pa = patch ("Faces", fvc.faces, "Vertices", fvc.vertices,
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
183 "FaceVertexCData", fc,
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
184 "FaceColor", "flat", "EdgeColor", "k",
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
185 "FaceLighting", "gouraud");
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
186 hax = gca ();
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
187 if (! ishold ())
22162
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
188 set (hax, "View", [-37.5, 30], "Box", "off");
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
189 endif
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
190 isonormals (x, y, z, val, pa);
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
191 lights = findobj (hax, "Type", "light");
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
192 if (isempty (lights))
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
193 ## FIXME: Matlab seems to use camlight (patch #9014) here
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
194 light ();
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
195 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
196 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
197 varargout = {fvc};
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
198 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
199 varargout = {fvc.faces, fvc.vertices};
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
200 otherwise ## 3
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
201 varargout = {fvc.faces, fvc.vertices, fvc.facevertexcdata};
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
202 endswitch
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
203
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
204 endfunction
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
205
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
206 function [x, y, z, data, iso, colors, noshare, verbose] = __get_check_isosurface_args__ (nout, varargin)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
207 ## get arguments from input and check values
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
208
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
209 x = [];
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
210 y = [];
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
211 z = [];
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
212 data = [];
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
213 iso = [];
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
214 colors = [];
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
215
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
216 ## default values
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
217 noshare = false;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
218 verbose = false;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
219
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
220 nin = length (varargin);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
221 num_string_inputs = 0;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
222 for i_arg = (nin:-1:nin-1)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
223 ## check whether last maximum 2 input arguments are strings and assign parameters
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
224 if (!ischar (varargin{i_arg}) || i_arg < 1)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
225 ## string arguments must be at the end
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
226 break
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
227 end
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
228 switch (tolower (varargin{i_arg}))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
229 case {"v", "verbose"}
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
230 verbose = true;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
231 num_string_inputs++;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
232 case {"n", "noshare"}
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
233 noshare = true;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
234 num_string_inputs++;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
235 otherwise
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
236 error ("isosurface: parameter '%s' not supported", varargin{i_arg})
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
237 endswitch
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
238 endfor
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
239
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
240 ## assign arguments
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
241 switch (nin - num_string_inputs)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
242 case 1 ## isosurface (val, ...)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
243 data = varargin{1};
22072
7680225527ef maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 22038
diff changeset
244 case 2 ## isosurface (val, iso, ...) or isosurface (val, col, ...)
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
245 data = varargin{1};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
246 if (isscalar (varargin{2}) || isempty (varargin{2}))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
247 iso = varargin{2};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
248 else
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
249 colors = varargin{2};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
250 endif
22072
7680225527ef maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 22038
diff changeset
251 case 3 ## isosurface (val, iso, col, ...)
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
252 data = varargin{1};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
253 iso = varargin{2};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
254 colors = varargin{3};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
255 case 4 ## isosurface (x, y, z, val, ...)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
256 x = varargin{1};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
257 y = varargin{2};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
258 z = varargin{3};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
259 data = varargin{4};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
260 case 5 ## isosurface (x, y, z, val, iso, ...) or isosurface (x, y, z, val, col, ...)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
261 x = varargin{1};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
262 y = varargin{2};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
263 z = varargin{3};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
264 data = varargin{4};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
265 if (isscalar (varargin{5}) || isempty (varargin{5}))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
266 iso = varargin{5};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
267 else
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
268 colors = varargin{5};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
269 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
270 case 6 ## isosurface (x, y, z, val, iso, col, ...)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
271 x = varargin{1};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
272 y = varargin{2};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
273 z = varargin{3};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
274 data = varargin{4};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
275 iso = varargin{5};
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
276 colors = varargin{6};
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
277 otherwise
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
278 error ("isosurface: wrong number of input arguments")
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
279 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
280
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
281 ## check dimensions of data
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
282 data_size = size (data);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
283 if (ndims (data) != 3 || any (data_size(1:3) < 2))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
284 error ("isosurface: VAL must be a non-singleton 3-dimensional matrix");
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
285 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
286
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
287 if (isempty (x))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
288 x = 1:size (data, 2);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
289 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
290 if (isempty (y))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
291 y = 1:size (data, 1);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
292 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
293 if (isempty (z))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
294 z = 1:size (data, 3);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
295 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
296
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
297 ## check x
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
298 if (isvector (x) && length (x) == data_size(2))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
299 x = repmat (x(:)', [data_size(1) 1 data_size(3)]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
300 elseif (! size_equal (data, x))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
301 error ("isosurface: X must match the size of VAL");
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
302 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
303
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
304 ## check y
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
305 if (isvector (y) && length (y) == data_size(1))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
306 y = repmat (y(:), [1 data_size(2) data_size(3)]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
307 elseif (! size_equal (data, y))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
308 error ("isosurface: Y must match the size of VAL");
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
309 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
310
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
311 ## check z
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
312 if (isvector (z) && length (z) == data_size(3))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
313 z = repmat (reshape (z(:), [1 1 length(z)]), [data_size(1) data_size(2) 1]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
314 elseif (! size_equal (data, z))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
315 error ("isosurface: Z must match the size of VAL");
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
316 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
317
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
318 ## check iso
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
319 if (isempty (iso))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
320 ## calculate "good" iso value from data
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
321 iso = __calc_isovalue_from_data__ (data);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
322 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
323
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
324 if ~isscalar (iso)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
325 error ("isosurface: ISO must be a scalar")
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
326 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
327
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
328 ## check colors
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
329 if (! isempty (colors))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
330 if (! size_equal (data, colors))
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
331 error ("isosurface: COL must match the size of VAL")
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
332 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
333 if (nout == 2)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
334 warning ("isosurface: colors will be calculated, but no output argument to receive it.");
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
335 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
336 elseif (nout == 3)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
337 error ("isosurface: COL must be passed to return C")
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
338 endif
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
339
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
340 endfunction
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
341
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
342
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
343 %!demo
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
344 %! clf;
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
345 %! [x,y,z] = meshgrid (-2:0.5:2, -2:0.5:2, -2:0.5:2);
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
346 %! val = x.^2 + y.^2 + z.^2;
22162
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
347 %! isosurface (x, y, z, val, 3);
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
348 %! isosurface (x, y, z, val, 5);
17633
382aaf2d533a isosurface.m: Turn off plot box and grid for Matlab visual compatibility.
Rik <rik@octave.org>
parents: 17572
diff changeset
349 %! axis equal;
22162
e50536734855 Change default properties of isosurface (bug #48572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22142
diff changeset
350 %! title ('isosurfaces of two nested spheres');
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
351
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
352 %!demo
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
353 %! x = 0:2;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
354 %! y = 0:3;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
355 %! z = 0:1;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
356 %! [xx, yy, zz] = meshgrid (x, y, z);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
357 %! val = [0, 0, 0; 0, 0, 0; 0, 0, 1; 0, 0, 1];
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
358 %! val(:,:,2) = [0, 0, 0; 0, 0, 1; 0, 1, 2; 0, 1, 2];
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
359 %! iso = 0.8;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
360 %% three arguments, no output
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
361 %! figure;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
362 %! subplot (2, 2, 1); isosurface (val, iso, yy); view(3)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
363 %% six arguments, no output (x, y, z are vectors)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
364 %! subplot (2, 2, 2); isosurface (x, y, z, val, iso, yy); view (3)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
365 %% six arguments, no output (x, y, z are matrices)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
366 %! subplot (2, 2, 3); isosurface (xx, yy, zz, val, iso, yy); view (3)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
367 %% six arguments, no output (mixed x, y, z) and option "noshare"
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
368 %! subplot (2, 2, 4); isosurface (x, yy, z, val, iso, yy, "noshare"); view (3)
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
369 %! annotation("textbox", [0 0.95 1 0.1], ...
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
370 %! "String", ["Apart from the first plot having a different scale, " ...
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
371 %! "all four plots must look the same.\n" ...
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
372 %! "The last plot might have different colors but must have " ...
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
373 %! "the same shape."], ...
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
374 %! "HorizontalAlignment", "left");
17078
18137205f57d isosurface.m: Update to new version of newplot().
Rik <rik@octave.org>
parents: 16839
diff changeset
375
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
376 %!shared x, y, z, xx, yy, zz, val, iso
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
377 %! x = 0:2;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
378 %! y = 0:3;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
379 %! z = 0:1;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
380 %! [xx, yy, zz] = meshgrid (x, y, z);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
381 %! val = [0, 0, 0; 0, 0, 0; 0, 0, 1; 0, 0, 1];
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
382 %! val(:,:,2) = [0, 0, 0; 0, 0, 1; 0, 1, 2; 0, 1, 2];
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
383 %! iso = 0.8;
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
384
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
385 ## one argument, one output
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
386 %!test
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
387 %! fv = isosurface (val);
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14335
diff changeset
388 %! assert (isfield (fv, "vertices"), true);
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14335
diff changeset
389 %! assert (isfield (fv, "faces"), true);
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
390 %! assert (size (fv.vertices), [5 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
391 %! assert (size (fv.faces), [3 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
392
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
393 ## two arguments (second is ISO), one output
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
394 %!test
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
395 %! fv = isosurface (val, iso);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
396 %! assert (isfield (fv, "vertices"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
397 %! assert (isfield (fv, "faces"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
398 %! assert (size (fv.vertices), [11 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
399 %! assert (size (fv.faces), [10 3]);
17078
18137205f57d isosurface.m: Update to new version of newplot().
Rik <rik@octave.org>
parents: 16839
diff changeset
400
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
401 ## two arguments (second is COL), one output
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
402 %!test
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
403 %! fvc = isosurface (val, yy);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
404 %! assert (isfield (fvc, "vertices"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
405 %! assert (isfield (fvc, "faces"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
406 %! assert (isfield (fvc, "facevertexcdata"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
407 %! assert (size (fvc.vertices), [5 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
408 %! assert (size (fvc.faces), [3 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
409 %! assert (size (fvc.facevertexcdata), [5 1]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
410
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
411 ## three arguments, one output
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
412 %!test
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
413 %! fvc = isosurface (val, iso, yy);
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14335
diff changeset
414 %! assert (isfield (fvc, "vertices"), true);
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14335
diff changeset
415 %! assert (isfield (fvc, "faces"), true);
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14335
diff changeset
416 %! assert (isfield (fvc, "facevertexcdata"), true);
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
417 %! assert (size (fvc.vertices), [11 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
418 %! assert (size (fvc.faces), [10 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
419 %! assert (size (fvc.facevertexcdata), [11 1]);
17078
18137205f57d isosurface.m: Update to new version of newplot().
Rik <rik@octave.org>
parents: 16839
diff changeset
420
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
421 ## four arguments, one output
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
422 %!test
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
423 %! fv = isosurface (x, [], z, val);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
424 %! assert (isfield (fv, "vertices"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
425 %! assert (isfield (fv, "faces"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
426 %! assert (size (fv.vertices), [5 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
427 %! assert (size (fv.faces), [3 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
428
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
429 ## five arguments (fifth is ISO), one output
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
430 %!test
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
431 %! fv = isosurface (xx, y, [], val, iso);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
432 %! assert (isfield (fv, "vertices"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
433 %! assert (isfield (fv, "faces"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
434 %! assert (size (fv.vertices), [11 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
435 %! assert (size (fv.faces), [10 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
436
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
437 ## five arguments (fifth is COL), one output
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
438 %!test
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
439 %! fvc = isosurface ([], yy, z, val, yy);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
440 %! assert (isfield (fvc, "vertices"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
441 %! assert (isfield (fvc, "faces"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
442 %! assert (isfield (fvc, "facevertexcdata"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
443 %! assert (size (fvc.vertices), [5 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
444 %! assert (size (fvc.faces), [3 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
445 %! assert (size (fvc.facevertexcdata), [5 1]);
17078
18137205f57d isosurface.m: Update to new version of newplot().
Rik <rik@octave.org>
parents: 16839
diff changeset
446
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
447 ## six arguments, one output
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
448 %!test
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
449 %! fvc = isosurface (xx, yy, zz, val, iso, yy);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
450 %! assert (isfield (fvc, "vertices"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
451 %! assert (isfield (fvc, "faces"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
452 %! assert (isfield (fvc, "facevertexcdata"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
453 %! assert (size (fvc.vertices), [11 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
454 %! assert (size (fvc.faces), [10 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
455 %! assert (size (fvc.facevertexcdata), [11 1]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
456
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
457 ## five arguments (fifth is ISO), two outputs
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
458 %!test
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
459 %! [f, v] = isosurface (x, y, z, val, iso);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
460 %! assert (size (f), [10 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
461 %! assert (size (v), [11 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
462
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
463 ## six arguments, three outputs
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
464 %!test
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
465 %! [f, v, c] = isosurface (x, y, z, val, iso, yy);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
466 %! assert (size (f), [10 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
467 %! assert (size (v), [11 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
468 %! assert (size (c), [11 1]);
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
469
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
470 ## two arguments (second is ISO) and one string, one output
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
471 %!test
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
472 %! fv = isosurface (val, iso, "verbose");
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
473 %! assert (isfield (fv, "vertices"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
474 %! assert (isfield (fv, "faces"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
475 %! assert (size (fv.vertices), [11 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
476 %! assert (size (fv.faces), [10 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
477
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
478 ## six arguments and two strings, one output
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
479 %!test
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
480 %! fvc = isosurface (xx, yy, zz, val, iso, yy, "v", "noshare");
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
481 %! assert (isfield (fvc, "vertices"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
482 %! assert (isfield (fvc, "faces"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
483 %! assert (isfield (fvc, "facevertexcdata"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
484 %! assert (size (fvc.vertices), [20 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
485 %! assert (size (fvc.faces), [10 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
486 %! assert (size (fvc.facevertexcdata), [20 1]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
487
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
488 ## five arguments (fifth is COL) and two strings (different order), one output
21173
5ecdcc6320d9 Fix regressions caused by ismatrix definition change (partial fix bug #47036).
Colin Macdonald <cbm@m.fsf.org>
parents: 20173
diff changeset
489 %!test
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
490 %! fvc = isosurface (xx, yy, zz, val, yy, "n", "v");
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
491 %! assert (isfield (fvc, "vertices"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
492 %! assert (isfield (fvc, "faces"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
493 %! assert (isfield (fvc, "facevertexcdata"), true);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
494 %! assert (size (fvc.vertices), [7 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
495 %! assert (size (fvc.faces), [3 3]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
496 %! assert (size (fvc.facevertexcdata), [7 1]);
21173
5ecdcc6320d9 Fix regressions caused by ismatrix definition change (partial fix bug #47036).
Colin Macdonald <cbm@m.fsf.org>
parents: 20173
diff changeset
497
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
498 ## test for each error and warning
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
499 %!test
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
500 %!error <X must match the size of VAL> x = 1:2:24; fvc = isosurface (x, y, z, val, iso);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
501 %!error <Y must match the size of VAL> y = -14:6:11; fvc = isosurface (x, y, z, val, iso);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
502 %!error <Z must match the size of VAL> z = linspace (16, 18, 5); fvc = isosurface (x, y, z, val, iso);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
503 %!error <X must match the size of VAL> x = 1:2:24; [xx, yy, zz] = meshgrid (x, y, z); fvc = isosurface (xx, yy, zz, val, iso);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
504 %!error <X must match the size of VAL> y = -14:6:11; [xx, yy, zz] = meshgrid (x, y, z); fvc = isosurface (xx, yy, zz, val, iso);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
505 %!error <X must match the size of VAL> z = linspace (16, 18, 3); [xx, yy, zz] = meshgrid (x, y, z); fvc = isosurface (xx, yy, zz, val, iso);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
506 %!error <VAL must be a non-singleton 3-dimensional matrix> val = reshape(1:6*8, [6 8]); fvc = isosurface (val, iso);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
507 %!error <VAL must be a non-singleton 3-dimensional matrix> val = reshape(1:6*8, [6 1 8]); fvc = isosurface (val, iso);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
508 %!error <ISO must be a scalar> fvc = isosurface (val, [iso iso], yy);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
509 %!error <COL must match the size of VAL> fvc = isosurface (val, [iso iso]);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
510 %!warning <colors will be calculated, but no output argument to receive it.> [f, v] = isosurface (val, iso, yy);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
511 %!error <COL must be passed to return C> [f, v, c] = isosurface (val, iso);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
512 %!error <Invalid call to isosurface> fvc = isosurface ();
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
513 %!error <Invalid call to isosurface> [f, v, c, a] = isosurface (val, iso);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
514 %!error <wrong number of input arguments> fvc = isosurface (xx, yy, zz, val, iso, yy, 5);
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
515 %!error <parameter 'test_string' not supported> fvc = isosurface (val, iso, "test_string");
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
516
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
517 ## test for __calc_isovalue_from_data__
22038
a4eb6d3de9f0 maint: Cannot test private function, unless bug #38776 is resolved.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 22035
diff changeset
518 ## FIXME: private function cannot be tested, unless bug #38776 is resolved.
a4eb6d3de9f0 maint: Cannot test private function, unless bug #38776 is resolved.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 22035
diff changeset
519 %!xtest
22035
634fbedbfb5b Additional functionality for isosurface.m (bug #46946)
Markus Muetzel <markus.muetzel@gmx.de>
parents: 21546
diff changeset
520 %! assert (__calc_isovalue_from_data__ (1:5), 3.02);