annotate scripts/plot/diffuse.m @ 17525:76a6d7de4cbc

Fix multiple problem with listeners for contour groups. * scripts/plot/contour.m: Add new %!demo showing use of a single contour line. * scripts/plot/private/__contour__.m: Fix bug with lowest level of contourf showing background through. Use same routines for calculating levels and levelstep in main code and in listeners. Fix linecolor when turning "fill" on and off. Fix "textlist" and "textliststep" properties which were not activating correctly.
author Rik <rik@octave.org>
date Tue, 01 Oct 2013 12:51:04 -0700
parents 1c89599167a6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14138
72c96de7a403 maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
1 ## Copyright (C) 2009-2012 Kai Habel
8450
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
2 ##
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
3 ## This file is part of Octave.
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
4 ##
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
6 ## under the terms of the GNU General Public License as published by
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
8 ## your option) any later version.
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
9 ##
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
13 ## General Public License for more details.
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
14 ##
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
17 ## <http://www.gnu.org/licenses/>.
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
18
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
19 ## -*- texinfo -*-
11469
c776f063fefe Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents: 9040
diff changeset
20 ## @deftypefn {Function File} {} diffuse (@var{sx}, @var{sy}, @var{sz}, @var{lv})
8450
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
21 ## Calculate diffuse reflection strength of a surface defined by the normal
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
22 ## vector elements @var{sx}, @var{sy}, @var{sz}.
17122
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14138
diff changeset
23 ##
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14138
diff changeset
24 ## The light source location vector @var{lv} can be given as 2-element vector
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14138
diff changeset
25 ## [azimuth, elevation] in degrees or as 3-element vector [lx, ly, lz].
8450
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
26 ## @seealso{specular, surfl}
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
27 ## @end deftypefn
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
28
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
29 ## Author: Kai Habel <kai.habel@gmx.de>
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
30
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
31 function retval = diffuse (sx, sy, sz, lv)
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
32
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
33 if (nargin != 4)
8460
e4c9ecb64411 diffuse.m, specular.m, surfl.m: style fixes
John W. Eaton <jwe@octave.org>
parents: 8450
diff changeset
34 print_usage ();
8450
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
35 endif
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
36
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
37 ## check for normal vector
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
38 if (!size_equal (sx, sy, sz))
8460
e4c9ecb64411 diffuse.m, specular.m, surfl.m: style fixes
John W. Eaton <jwe@octave.org>
parents: 8450
diff changeset
39 error ("diffuse: SX, SY, and SZ must have same size");
8450
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
40 endif
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
41
8450
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
42 ## check for light vector (lv) argument
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
43 if (length (lv) < 2 || length (lv) > 3)
8460
e4c9ecb64411 diffuse.m, specular.m, surfl.m: style fixes
John W. Eaton <jwe@octave.org>
parents: 8450
diff changeset
44 error ("diffuse: light vector LV must be a 2- or 3-element vector");
8450
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
45 elseif (length (lv) == 2)
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
46 [lv(1), lv(2), lv(3)] = sph2cart (lv(1) * pi/180, lv(2) * pi/180, 1.0);
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
47 endif
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
48
8460
e4c9ecb64411 diffuse.m, specular.m, surfl.m: style fixes
John W. Eaton <jwe@octave.org>
parents: 8450
diff changeset
49 ## Normalize view and light vector.
8450
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
50 if (sum (abs (lv)) > 0)
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
51 lv /= norm (lv);
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
52 endif
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
53
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
54 ns = sqrt (sx.^2 + sy.^2 + sz.^2);
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
55 retval = (sx * lv(1) + sy * lv(2) + sz * lv(3)) ./ ns;
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
56 retval(retval < 0) = 0;
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
57
8450
6c4e2fc14beb Add new 3D plotting function surfl. Add light functions diffuse and specular
Kai Habel
parents:
diff changeset
58 endfunction
17338
1c89599167a6 maint: End m-files with 1 blank line.
Rik <rik@octave.org>
parents: 17122
diff changeset
59