Mercurial > octave-nkf
view scripts/general/cart2sph.m @ 20216:aa36fb998a4d stable
maint: Remove unnecessary whitespace at end of lines.
* libgui/Makefile.am, libgui/graphics/Canvas.cc,
libgui/graphics/EditControl.cc, libgui/graphics/Figure.cc,
libgui/graphics/MouseModeActionGroup.cc, libgui/graphics/annotation-dialog.cc,
libgui/graphics/annotation-dialog.h, libgui/graphics/gl-select.cc,
libgui/graphics/module.mk, libgui/kb-layouts/default.keytab,
libgui/kb-layouts/linux.keytab, libgui/kb-layouts/vt420pc.keytab,
libgui/src/m-editor/find-dialog.cc, libgui/src/main-window.cc,
libgui/src/octave-qt-link.cc, libgui/src/octave-qt-link.h,
libgui/src/shortcut-manager.h, libinterp/corefcn/error.cc,
libinterp/corefcn/find.cc, libinterp/corefcn/gl2ps-renderer.cc,
libinterp/corefcn/graphics.cc, libinterp/corefcn/graphics.in.h,
libinterp/corefcn/octave-link.cc, libinterp/corefcn/quadcc.cc,
libinterp/corefcn/strfns.cc, libinterp/corefcn/syscalls.cc,
libinterp/corefcn/sysdep.cc, libinterp/corefcn/urlwrite.cc,
libinterp/corefcn/utils.cc, libinterp/corefcn/variables.cc,
libinterp/dldfcn/__init_fltk__.cc, libinterp/dldfcn/ccolamd.cc,
libinterp/dldfcn/colamd.cc, libinterp/octave-value/ov-bool-sparse.cc,
libinterp/octave-value/ov-classdef.cc, libinterp/octave-value/ov-re-sparse.cc,
libinterp/octave-value/ov-struct.cc, libinterp/parse-tree/pt-arg-list.cc,
scripts/audio/@audiorecorder/play.m, scripts/audio/wavwrite.m,
scripts/general/cart2sph.m, scripts/geometry/inpolygon.m,
scripts/gui/listdlg.m, scripts/gui/msgbox.m,
scripts/gui/private/message_dialog.m, scripts/help/get_first_help_sentence.m,
scripts/help/lookfor.m, scripts/image/imshow.m, scripts/io/strread.m,
scripts/java/javamem.m, scripts/miscellaneous/dir.m,
scripts/miscellaneous/edit.m, scripts/miscellaneous/genvarname.m,
scripts/miscellaneous/gzip.m, scripts/miscellaneous/private/__w2mpth__.m,
scripts/plot/appearance/annotation.m, scripts/plot/draw/colorbar.m,
scripts/plot/draw/quiver3.m, scripts/plot/util/hold.m,
scripts/plot/util/print.m, scripts/polynomial/mkpp.m,
scripts/polynomial/polyder.m, scripts/polynomial/spline.m,
scripts/polynomial/unmkpp.m, scripts/signal/arma_rnd.m, scripts/sparse/gplot.m,
scripts/statistics/tests/t_test.m,
scripts/statistics/tests/t_test_regression.m, scripts/strings/mat2str.m,
scripts/strings/strsplit.m, scripts/strings/strtrunc.m,
scripts/strings/untabify.m, scripts/testfun/assert.m:
maint: Remove unnecessary whitespace at end of lines.
author | Rik <rik@octave.org> |
---|---|
date | Tue, 12 May 2015 09:22:01 -0700 |
parents | 7503499a252b |
children |
line wrap: on
line source
## Copyright (C) 2000-2015 Kai Habel ## ## This file is part of Octave. ## ## Octave 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. ## ## Octave 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 Octave; see the file COPYING. If not, see ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- ## @deftypefn {Function File} {[@var{theta}, @var{phi}, @var{r}] =} cart2sph (@var{x}, @var{y}, @var{z}) ## @deftypefnx {Function File} {[@var{theta}, @var{phi}, @var{r}] =} cart2sph (@var{C}) ## @deftypefnx {Function File} {@var{S} =} cart2sph (@dots{}) ## Transform Cartesian coordinates to spherical coordinates. ## ## The inputs @var{x}, @var{y}, and @var{z} must be the same shape, or scalar. ## If called with a single matrix argument then each row of @var{C} represents ## the Cartesian coordinate (@var{x}, @var{y}, @var{z}). ## ## @var{theta} describes the angle relative to the positive x-axis. ## ## @var{phi} is the angle relative to the xy-plane. ## ## @var{r} is the distance to the origin @w{(0, 0, 0)}. ## ## If only a single return argument is requested then return a matrix @var{S} ## where each row represents one spherical coordinate ## (@var{theta}, @var{phi}, @var{r}). ## @seealso{sph2cart, cart2pol, pol2cart} ## @end deftypefn ## Author: Kai Habel <kai.habel@gmx.de> ## Adapted-by: jwe function [theta, phi, r] = cart2sph (x, y, z) if (nargin != 1 && nargin != 3) print_usage (); endif if (nargin == 1) if (ismatrix (x) && columns (x) == 3) z = x(:,3); y = x(:,2); x = x(:,1); else error ("cart2sph: matrix input must have 3 columns [X, Y, Z]"); endif elseif (nargin == 3) if (! ((ismatrix (x) && ismatrix (y) && ismatrix (z)) && (size_equal (x, y) || isscalar (x) || isscalar (y)) && (size_equal (x, z) || isscalar (x) || isscalar (z)) && (size_equal (y, z) || isscalar (y) || isscalar (z)))) error ("cart2sph: X, Y, Z must be matrices of the same size, or scalar"); endif endif theta = atan2 (y, x); phi = atan2 (z, sqrt (x .^ 2 + y .^ 2)); r = sqrt (x .^ 2 + y .^ 2 + z .^ 2); if (nargout <= 1) theta = [theta(:), phi(:), r(:)]; endif endfunction %!test %! x = [0, 1, 2]; %! y = [0, 1, 2]; %! z = [0, 1, 2]; %! [t, p, r] = cart2sph (x, y, z); %! assert (t, [0, pi/4, pi/4], eps); %! assert (p, [0, 1, 1]*atan (sqrt (0.5)), eps); %! assert (r, [0, 1, 2]*sqrt (3), eps); %!test %! x = 0; %! y = [0, 1, 2]; %! z = [0, 1, 2]; %! S = cart2sph (x, y, z); %! assert (S(:,1), [0; 1; 1] * pi/2, eps); %! assert (S(:,2), [0; 1; 1] * pi/4, eps); %! assert (S(:,3), [0; 1; 2] * sqrt (2), eps); %!test %! x = [0, 1, 2]; %! y = 0; %! z = [0, 1, 2]; %! [t, p, r] = cart2sph (x, y, z); %! assert (t, [0, 0, 0]); %! assert (p, [0, 1, 1] * pi/4); %! assert (r, [0, 1, 2] * sqrt (2)); %!test %! x = [0, 1, 2]; %! y = [0, 1, 2]; %! z = 0; %! [t, p, r] = cart2sph (x, y, z); %! assert (t, [0, 1, 1] * pi/4); %! assert (p, [0, 0, 0]); %! assert (r, [0, 1, 2] * sqrt (2)); %!test %! C = [0, 0, 0; 1, 0, 1; 2, 0, 2]; %! S = [0, 0, 0; 0, pi/4, sqrt(2); 0, pi/4, 2*sqrt(2)]; %! assert (cart2sph (C), S, eps);