Mercurial > hg > octave-lyh
comparison scripts/plot/diffuse.m @ 11587:c792872f8942
all script files: untabify and strip trailing whitespace
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 20 Jan 2011 17:35:29 -0500 |
parents | fd0a3ac60b0e |
children | 72c96de7a403 |
comparison
equal
deleted
inserted
replaced
11586:12df7854fa7c | 11587:c792872f8942 |
---|---|
17 ## <http://www.gnu.org/licenses/>. | 17 ## <http://www.gnu.org/licenses/>. |
18 | 18 |
19 ## -*- texinfo -*- | 19 ## -*- texinfo -*- |
20 ## @deftypefn {Function File} {} diffuse (@var{sx}, @var{sy}, @var{sz}, @var{lv}) | 20 ## @deftypefn {Function File} {} diffuse (@var{sx}, @var{sy}, @var{sz}, @var{lv}) |
21 ## Calculate diffuse reflection strength of a surface defined by the normal | 21 ## Calculate diffuse reflection strength of a surface defined by the normal |
22 ## vector elements @var{sx}, @var{sy}, @var{sz}. | 22 ## vector elements @var{sx}, @var{sy}, @var{sz}. |
23 ## The light vector can be specified using parameter @var{lv}. It can be | 23 ## The light vector can be specified using parameter @var{lv}. It can be |
24 ## given as 2-element vector [azimuth, elevation] in degrees or as 3-element | 24 ## given as 2-element vector [azimuth, elevation] in degrees or as 3-element |
25 ## vector [lx, ly, lz]. | 25 ## vector [lx, ly, lz]. |
26 ## @seealso{specular, surfl} | 26 ## @seealso{specular, surfl} |
27 ## @end deftypefn | 27 ## @end deftypefn |
28 | 28 |
29 ## Author: Kai Habel <kai.habel@gmx.de> | 29 ## Author: Kai Habel <kai.habel@gmx.de> |
30 | 30 |
36 | 36 |
37 ## check for normal vector | 37 ## check for normal vector |
38 if (!size_equal (sx, sy, sz)) | 38 if (!size_equal (sx, sy, sz)) |
39 error ("diffuse: SX, SY, and SZ must have same size"); | 39 error ("diffuse: SX, SY, and SZ must have same size"); |
40 endif | 40 endif |
41 | 41 |
42 ## check for light vector (lv) argument | 42 ## check for light vector (lv) argument |
43 if (length (lv) < 2 || length (lv) > 3) | 43 if (length (lv) < 2 || length (lv) > 3) |
44 error ("diffuse: light vector LV must be a 2- or 3-element vector"); | 44 error ("diffuse: light vector LV must be a 2- or 3-element vector"); |
45 elseif (length (lv) == 2) | 45 elseif (length (lv) == 2) |
46 [lv(1), lv(2), lv(3)] = sph2cart (lv(1) * pi/180, lv(2) * pi/180, 1.0); | 46 [lv(1), lv(2), lv(3)] = sph2cart (lv(1) * pi/180, lv(2) * pi/180, 1.0); |
52 endif | 52 endif |
53 | 53 |
54 ns = sqrt (sx.^2 + sy.^2 + sz.^2); | 54 ns = sqrt (sx.^2 + sy.^2 + sz.^2); |
55 retval = (sx * lv(1) + sy * lv(2) + sz * lv(3)) ./ ns; | 55 retval = (sx * lv(1) + sy * lv(2) + sz * lv(3)) ./ ns; |
56 retval(retval < 0) = 0; | 56 retval(retval < 0) = 0; |
57 | 57 |
58 endfunction | 58 endfunction |