summaryrefslogtreecommitdiff
path: root/inst/fromDegrees.m
diff options
context:
space:
mode:
authorRafael Laboissiere <rafael@laboissiere.net>2016-08-20 08:21:36 -0300
committerRafael Laboissiere <rafael@laboissiere.net>2016-08-20 08:21:36 -0300
commit2bab124e83280dfcf9af418ad6a39efbf5bef040 (patch)
tree16c566d8c1fe2171ef7cc0c7ea04c72cd654b7a7 /inst/fromDegrees.m
parent1fda39a934629f66b9cbf6299d0fc5b2a37c65f9 (diff)
Imported Upstream version 1.2.1
Diffstat (limited to 'inst/fromDegrees.m')
-rw-r--r--inst/fromDegrees.m75
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")