diff options
author | Rafael Laboissiere <rafael@laboissiere.net> | 2016-08-20 08:21:36 -0300 |
---|---|---|
committer | Rafael Laboissiere <rafael@laboissiere.net> | 2016-08-20 08:21:36 -0300 |
commit | 2bab124e83280dfcf9af418ad6a39efbf5bef040 (patch) | |
tree | 16c566d8c1fe2171ef7cc0c7ea04c72cd654b7a7 /inst/fromDegrees.m | |
parent | 1fda39a934629f66b9cbf6299d0fc5b2a37c65f9 (diff) |
Imported Upstream version 1.2.1
Diffstat (limited to 'inst/fromDegrees.m')
-rw-r--r-- | inst/fromDegrees.m | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/inst/fromDegrees.m b/inst/fromDegrees.m new file mode 100644 index 0000000..da04df0 --- /dev/null +++ b/inst/fromDegrees.m @@ -0,0 +1,75 @@ +## Copyright (C) 2014 Carnë Draug <carandraug@octave.org> +## +## This program is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or (at +## your option) any later version. +## +## This program is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {[@var{a1}, @var{a2}, @dots{}] =} fromDegrees (@var{toUnit}, @var{deg1}, @var{deg2}, @dots{}) +## Convert angles from radians. +## +## Converts any number of input arguments, @var{deg1}, @var{deg2}, @dots{} +## with angles in degrees, into @var{toUnit} which may be @qcode{"radians"} or +## @qcode{"degrees"}. +## +## @example +## @group +## [a1, a2] = fromDegrees ("radians", 180, [180 360]) +## @result{a1} [ 3.1416 ] +## @result{a2} [ 3.1416 6.2832 ] +## @end group +## @end example +## +## @seealso{deg2rad, fromRadians, toDegrees, toRadians, unitsratio} +## @end deftypefn + +## Author: Carnë Draug <carandraug@octave.org> + +function varargout = fromDegrees (toUnit, varargin) + + if (nargin < 1) + print_usage (); + endif + + valid_unit = validatestring (toUnit, {"radians", "degrees"}, "fromDegrees", "TOUNIT"); + switch (valid_unit(1)) + case {"r"} + varargout = cellfun (@deg2rad, varargin, "UniformOutput", false); + case {"d"} + varargout = varargin; + endswitch + +endfunction + +%!test +%! rad{1} = pi; +%! rad{2} = [pi 2*pi]; +%! rad{3} = [0 pi; 2*pi 0]; +%! deg{1} = 180; +%! deg{2} = [180 360]; +%! deg{3} = [0 180; 360 0]; +%! for i=1:3 +%! assert (fromDegrees ("degrees", deg{i}), deg{i}) +%! assert (fromDegrees ("radians", deg{i}), rad{i}) +%! endfor +%! +%! ## test multiple angles same time +%! assert (nthargout (1:3, @fromDegrees, "radians", deg{:}), rad) +%! assert (nthargout (1:2, @fromDegrees, "radians", deg{:}), rad(1:2)) +%! +%! ## test abbreviations of degrees +%! assert (nthargout (1:3, @fromDegrees, "radian", deg{:}), rad) +%! assert (nthargout (1:3, @fromDegrees, "rad", deg{:}), rad) +%! assert (nthargout (1:3, @fromDegrees, "r", deg{:}), rad) + +%!error fromDegrees ("INVALID") |