1## Copyright (C) 2021 David Legland 2## All rights reserved. 3## 4## Redistribution and use in source and binary forms, with or without 5## modification, are permitted provided that the following conditions are met: 6## 7## 1 Redistributions of source code must retain the above copyright notice, 8## this list of conditions and the following disclaimer. 9## 2 Redistributions in binary form must reproduce the above copyright 10## notice, this list of conditions and the following disclaimer in the 11## documentation and/or other materials provided with the distribution. 12## 13## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ''AS IS'' 14## AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16## ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR 17## ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18## DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 19## SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 20## CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 21## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23## 24## The views and conclusions contained in the software and documentation are 25## those of the authors and should not be interpreted as representing official 26## policies, either expressed or implied, of the copyright holders. 27 28function angles3d(varargin) 29%ANGLES3D Conventions for manipulating angles in 3D. 30% 31% The library uses both radians and degrees angles; 32% Results of angle computation between shapes usually returns angles in 33% radians. 34% Representation of 3D shapes use angles in degrees (easier to manipulate 35% and to save). 36% 37% Contrary to the plane, there are no oriented angles in 3D. Angles 38% between lines or between planes are comprised between 0 and PI. 39% 40% Spherical angles 41% Spherical angles are defined by 2 angles: 42% * THETA, the colatitude, representing angle with Oz axis (between 0 and 43% PI) 44% * PHI, the azimut, representing angle with Ox axis of horizontal 45% projection of the direction (between 0 and 2*PI) 46% 47% Spherical coordinates can be represented by THETA, PHI, and the 48% distance RHO to the origin. 49% 50% Euler angles 51% Some functions for creating rotations use Euler angles. They follow the 52% ZYX convention in the global reference system, that is eqivalent to the 53% XYZ convention ine a local reference system. 54% Euler angles are given by a triplet of angles [PHI THETA PSI] that 55% represents the succession of 3 rotations: 56% * rotation around X by angle PSI ("roll") 57% * rotation around Y by angle THETA ("pitch") 58% * rotation around Z by angle PHI ("yaw") 59% 60% In this library, euler angles are given in degrees. The functions that 61% use euler angles use the keyword 'Euler' in their name. 62% 63% 64% See also 65% cart2sph2, sph2cart2, cart2sph2d, sph2cart2d 66% anglePoints3d, angleSort3d, sphericalAngle, randomAngle3d 67% dihedralAngle, polygon3dNormalAngle, eulerAnglesToRotation3d 68% rotation3dAxisAndAngle, rotation3dToEulerAngles 69% 70 71% ------ 72% Author: David Legland 73% e-mail: david.legland@inra.fr 74% Created: 2008-10-13, using Matlab 7.4.0.287 (R2007a) 75% Copyright 2008 INRA - BIA PV Nantes - MIAJ Jouy-en-Josas. 76