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