annotate scripts/plot/appearance/lighting.m @ 30564:796f54d4ddbf stable

update Octave Project Developers copyright for the new year In files that have the "Octave Project Developers" copyright notice, update for 2021. In all .txi and .texi files except gpl.txi and gpl.texi in the doc/liboctave and doc/interpreter directories, change the copyright to "Octave Project Developers", the same as used for other source files. Update copyright notices for 2022 (not done since 2019). For gpl.txi and gpl.texi, change the copyright notice to be "Free Software Foundation, Inc." and leave the date at 2007 only because this file only contains the text of the GPL, not anything created by the Octave Project Developers. Add Paul Thomas to contributors.in.
author John W. Eaton <jwe@octave.org>
date Tue, 28 Dec 2021 18:22:40 -0500
parents 7854d5752dd2
children a40c0b7aa376
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ########################################################################
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 ##
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
3 ## Copyright (C) 2016-2022 The Octave Project Developers
27918
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 27916
diff changeset
4 ##
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 ## See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 ## distribution or <https://octave.org/copyright/>.
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
7 ##
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
8 ## This file is part of Octave.
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
9 ##
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24432
diff changeset
10 ## Octave is free software: you can redistribute it and/or modify it
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
11 ## under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24432
diff changeset
12 ## the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22302
diff changeset
13 ## (at your option) any later version.
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
14 ##
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
15 ## Octave is distributed in the hope that it will be useful, but
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22302
diff changeset
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22302
diff changeset
18 ## GNU General Public License for more details.
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
19 ##
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
20 ## You should have received a copy of the GNU General Public License
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
21 ## along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24432
diff changeset
22 ## <https://www.gnu.org/licenses/>.
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 ##
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ########################################################################
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
25
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
26 ## -*- texinfo -*-
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
27 ## @deftypefn {} {} lighting (@var{type})
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
28 ## @deftypefnx {} {} lighting (@var{hax}, @var{type})
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
29 ## Set the lighting of patch or surface graphic objects.
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
30 ##
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
31 ## Valid arguments for @var{type} are
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
32 ##
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
33 ## @table @asis
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
34 ## @item @qcode{"flat"}
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
35 ## Draw objects with faceted lighting effects.
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
36 ##
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
37 ## @item @qcode{"gouraud"}
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
38 ## Draw objects with linear interpolation of the lighting effects between the
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
39 ## vertices.
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
40 ##
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
41 ## @item @qcode{"none"}
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
42 ## Draw objects without light and shadow effects.
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
43 ## @end table
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
44 ##
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
45 ## If the first argument @var{hax} is an axes handle, then change the lighting
24431
0c6cedafc71e doc: Use 'axes' rather than 'axis' appropriately in docstrings.
Rik <rik@octave.org>
parents: 23219
diff changeset
46 ## effects of objects in this axes, rather than the current axes returned by
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
47 ## @code{gca}.
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
48 ##
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
49 ## The lighting effects are only visible if at least one light object is
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
50 ## present and visible in the same axes.
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
51 ##
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
52 ## @seealso{light, fill, mesh, patch, pcolor, surf, surface, shading}
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
53 ## @end deftypefn
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
54
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
55 function lighting (varargin)
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
56
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
57 [hax, varargin, nargin] = __plt_get_axis_arg__ ("lighting", varargin{:});
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
58
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
59 if (nargin != 1)
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
60 print_usage ();
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
61 endif
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
62
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
63 mode = varargin{1};
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
64 if (! ischar (mode))
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
65 error ("lighting: MODE must be a string");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
66 elseif (! any (strcmpi (mode, {"flat", "gouraud", "none"})))
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
67 error ('lighting: Invalid MODE "%s"', mode);
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
68 endif
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
69
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
70 if (isempty (hax))
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
71 hax = gca ();
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
72 endif
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
73
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
74 ## Find all patch and surface objects that are descendants of hax
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
75 ## and which are not part of a contour plot hggroup.
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
76 hlist = [];
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
77 kids = get (hax, "children");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
78 while (! isempty (kids))
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
79 types = get (kids, "type");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
80 hlist = [hlist; kids(strcmp(types, "patch"))];
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
81 hlist = [hlist; kids(strcmp(types, "surface"))];
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
82 parents = kids(strcmp (types, "axes"));
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
83 hglist = kids(strcmp (types, "hggroup"));
27916
4a30a58a44ab lighting.m: Eliminate for loop introduced in 703156b6d602 for performance (bug #57537).
Rik <rik@octave.org>
parents: 27911
diff changeset
84
4a30a58a44ab lighting.m: Eliminate for loop introduced in 703156b6d602 for performance (bug #57537).
Rik <rik@octave.org>
parents: 27911
diff changeset
85 kids = get (parents, "children");
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
86 for i = 1 : numel (hglist)
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
87 props = get (hglist(i));
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
88 if (! isfield (props, "levelstep"))
27916
4a30a58a44ab lighting.m: Eliminate for loop introduced in 703156b6d602 for performance (bug #57537).
Rik <rik@octave.org>
parents: 27911
diff changeset
89 kids = [kids; get(hglist(i), "children")];
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
90 endif
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
91 endfor
27916
4a30a58a44ab lighting.m: Eliminate for loop introduced in 703156b6d602 for performance (bug #57537).
Rik <rik@octave.org>
parents: 27911
diff changeset
92
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
93 endwhile
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
94
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
95 ## FIXME: This is the old, simple code.
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
96 ## Unfortunately, it also lights contour plots which is not desirable.
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
97 ##hp = findobj (hax, "type", "patch");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
98 ##hs = findobj (hax, "type", "surface");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
99 ##hlist = [hp(:); hs(:)];
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
100
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
101 if (isempty (hlist))
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
102 return;
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
103 endif
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
104
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
105 ## Change "EdgeLighting" for meshes instead of "FaceLighting"
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
106 fc = get (hlist, "facecolor");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
107 is_mesh = strcmp (fc, "none");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
108 if (! iscell (fc))
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
109 fc = {fc};
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
110 endif
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
111 bc = get (hax, "color");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
112 if (strcmp (bc, "none"))
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
113 if (isprop (get (hax, "parent"), "color"))
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
114 bc = get (get (hax, "parent"), "color");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
115 endif
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
116 if (isempty (bc) || strcmp (bc, "none"))
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
117 bc = [1 1 1];
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
118 endif
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
119 endif
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
120 is_mesh = is_mesh | cellfun (@(x) isequal (x, bc), fc);
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
121
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
122 set (hlist(! is_mesh), "facelighting", mode, "edgelighting", "none");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
123 set (hlist(is_mesh), "edgelighting", mode, "facelighting", "none");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
124
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
125 endfunction
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
126
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
127
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
128 %!demo
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
129 %! clf;
22302
1c4cd12987f5 Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents: 22157
diff changeset
130 %! colormap ("default");
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
131 %! sombrero ();
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
132 %! shading flat
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
133 %! lighting flat
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
134 %! light ();
22302
1c4cd12987f5 Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents: 22157
diff changeset
135 %! title ("shading flat - lighting flat");
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
136
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
137 %!demo
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
138 %! clf;
22302
1c4cd12987f5 Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents: 22157
diff changeset
139 %! colormap ("default");
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
140 %! sombrero ();
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
141 %! shading interp
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
142 %! lighting gouraud
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
143 %! light ();
22302
1c4cd12987f5 Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents: 22157
diff changeset
144 %! title ("shading interp - lighting gouraud");
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
145
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
146 %!demo
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
147 %! clf;
22302
1c4cd12987f5 Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents: 22157
diff changeset
148 %! colormap ("default");
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
149 %! pcolor (peaks ());
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
150 %! shading flat
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
151 %! lighting flat
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
152 %! light ();
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
153 %! view (3)
22302
1c4cd12987f5 Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents: 22157
diff changeset
154 %! title ("shading flat - lighting flat");
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
155
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
156 %!demo
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
157 %! clf;
22302
1c4cd12987f5 Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents: 22157
diff changeset
158 %! colormap ("default");
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
159 %! pcolor (peaks ());
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
160 %! shading interp
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
161 %! lighting gouraud
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
162 %! light ();
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
163 %! view (3)
22302
1c4cd12987f5 Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents: 22157
diff changeset
164 %! title ("shading interp - lighting gouraud");
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
165
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
166 %!demo
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
167 %! clf;
22302
1c4cd12987f5 Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents: 22157
diff changeset
168 %! colormap ("default");
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
169 %! mesh (sombrero ());
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
170 %! shading flat
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
171 %! lighting flat
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
172 %! light ();
22302
1c4cd12987f5 Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents: 22157
diff changeset
173 %! title ("shading flat - lighting flat");
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
174
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
175 %!demo
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
176 %! clf;
22302
1c4cd12987f5 Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents: 22157
diff changeset
177 %! colormap ("default");
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
178 %! mesh (sombrero ());
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
179 %! shading interp
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
180 %! lighting gouraud
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
181 %! light ();
22302
1c4cd12987f5 Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents: 22157
diff changeset
182 %! title ("shading interp - lighting gouraud");
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
183
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
184 %!test
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
185 %! hf = figure ("visible", "off");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
186 %! unwind_protect
28892
3cac3ceb9629 maint: Use coding style with parentheses after function name to distinguish from a variable.
Rik <rik@octave.org>
parents: 27978
diff changeset
187 %! ha = axes ();
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
188 %! hm = mesh (sombrero ());
28892
3cac3ceb9629 maint: Use coding style with parentheses after function name to distinguish from a variable.
Rik <rik@octave.org>
parents: 27978
diff changeset
189 %! hp = patch ();
3cac3ceb9629 maint: Use coding style with parentheses after function name to distinguish from a variable.
Rik <rik@octave.org>
parents: 27978
diff changeset
190 %! hs = surface ();
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
191 %! lighting flat
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
192 %! assert (get (hp, "facelighting"), "flat");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
193 %! assert (get (hs, "facelighting"), "flat");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
194 %! assert (get (hp, "edgelighting"), "none");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
195 %! assert (get (hs, "edgelighting"), "none");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
196 %! assert (get (hm, "edgelighting"), "flat");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
197 %! lighting gouraud
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
198 %! assert (get (hp, "facelighting"), "gouraud");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
199 %! assert (get (hs, "facelighting"), "gouraud");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
200 %! assert (get (hp, "edgelighting"), "none");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
201 %! assert (get (hs, "edgelighting"), "none");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
202 %! assert (get (hm, "edgelighting"), "gouraud");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
203 %! lighting none
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
204 %! assert (get (hp, "facelighting"), "none");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
205 %! assert (get (hs, "facelighting"), "none");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
206 %! assert (get (hp, "edgelighting"), "none");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
207 %! assert (get (hs, "edgelighting"), "none");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
208 %! assert (get (hm, "edgelighting"), "none");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
209 %! lighting (ha, "flat")
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
210 %! assert (get (hp, "facelighting"), "flat");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
211 %! assert (get (hs, "facelighting"), "flat");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
212 %! assert (get (hp, "edgelighting"), "none");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
213 %! assert (get (hs, "edgelighting"), "none");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
214 %! assert (get (hm, "edgelighting"), "flat");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
215 %! unwind_protect_cleanup
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
216 %! close (hf);
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
217 %! end_unwind_protect
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
218
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
219 ## Test on axes which has no patch or mesh objects
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
220 %!test
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
221 %! hf = figure ("visible", "off");
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
222 %! unwind_protect
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
223 %! lighting flat
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
224 %! unwind_protect_cleanup
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
225 %! close (hf);
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
226 %! end_unwind_protect
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
227
28896
90fea9cc9caa test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents: 28892
diff changeset
228 %!error <Invalid call> lighting ()
22140
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
229 %!error lighting (1, 2, "flat")
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
230 %!error <MODE must be a string> lighting (-1)
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
231 %!error <MODE must be a string> lighting ({})
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
232 %!error <Invalid MODE "foo"> lighting foo
18eae417ffec Add function "lighting" (patch #9040).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff changeset
233 %!error <Invalid call to lighting> lighting (-1, "flat")