资源简介

基于三角曲面网格实现测地线算法的matlab程序源码

资源截图

代码片段和文件信息

function alpha = anglePoints3d(varargin)
%ANGLEPOINTS3D Compute angle between three 3D points
%
%   ALPHA = anglePoints3d(P1 P2)
%   Computes angle (P1 O P2) in radians between 0 and PI.
%
%   ALPHA = anglePoints3d(P1 P2 P3)
%   Computes angle (P1 P2 P3) in radians between 0 and PI.
%
%   ALPHA = anglePoints3d(PTS)
%   PTS is a 3x3 or 2x3 array containing coordinate of points.
%
%   See also
%   points3d angles3d
%
%   ---------
%   author : David Legland 
%   INRA - TPV URPOI - BIA IMASTE
%   created the 21/02/2005.
%

%   HISTORY
%   20/09/2005 : add case of single argument for all points
%   04/01/2007: check typo

p2 = [0 0 0];
if length(varargin)==1
    pts = varargin{1};
    if size(pts 1)==2
        p1 = pts(1:);
        p0 = [0 0 0];
        p2 = pts(2:);
    else
        p1 = pts(1:);
        p0 = pts(2:);
        p2 = pts(3:);
    end
elseif length(varargin)==2
    p1 = varargin{1};
    p0 = [0 0 0];
    p2 = varargin{2};
elseif length(varargin)==3
    p1 = varargin{1};
    p0 = varargin{2};
    p2 = varargin{3};
end

% ensure all data have same size
n1 = size(p1 1);
n2 = size(p2 1);
n0 = size(p0 1);
if n1~=n2
    if n1==1
        p1 = repmat(p1 [n2 1]);
    elseif n2==1
        p2 = repmat(p2 [n1 1]);
    else
        error(‘Arguments P1 and P2 must have the same size‘);
    end
end
if n1~=n0
    if n1==1
        p1 = repmat(p1 [n0 1]);
    elseif n0==1
        p0 = repmat(p0 [n1 1]);
    else
        error(‘Arguments P1 and P0 must have the same size‘);
    end
end

% normalized vectors
p1 = normalizeVector3d(p1-p0);
p2 = normalizeVector3d(p2-p0);

% compute angle
alpha = acos(dot(p1 p2 2));

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-06-30 15:51  geom3d\
     目录           0  2011-06-30 15:51  geom3d\geom3d\
     文件        1734  2010-08-11 22:13  geom3d\geom3d\anglePoints3d.m
     文件        1710  2011-06-29 17:57  geom3d\geom3d\angles3d.m
     文件        2035  2011-03-21 03:07  geom3d\geom3d\angleSort3d.m
     文件         621  2010-07-26 22:00  geom3d\geom3d\box3dVolume.m
     文件         671  2011-06-27 14:53  geom3d\geom3d\boxes3d.m
     文件        1505  2008-10-13 22:15  geom3d\geom3d\cart2cyl.m
     文件        1631  2011-06-29 17:57  geom3d\geom3d\cart2sph2.m
     文件        1791  2011-06-29 17:57  geom3d\geom3d\cart2sph2d.m
     文件        3400  2011-06-30 13:40  geom3d\geom3d\changelog.txt
     文件         629  2010-07-29 18:07  geom3d\geom3d\changes.txt
     文件        1013  2011-06-21 18:36  geom3d\geom3d\circle3dOrigin.m
     文件        1307  2011-06-21 20:41  geom3d\geom3d\circle3dPoint.m
     文件        1423  2011-06-29 17:57  geom3d\geom3d\circle3dPosition.m
     文件         913  2011-06-22 14:51  geom3d\geom3d\circles3d.m
     文件        2957  2011-03-21 03:07  geom3d\geom3d\clipLine3d.m
     文件        1061  2011-03-21 03:07  geom3d\geom3d\clipPoints3d.m
     文件        2567  2008-10-13 22:15  geom3d\geom3d\clipPolygon3dHP.m
     文件         931  2011-03-21 03:07  geom3d\geom3d\composeTransforms3d.m
     文件       11470  2011-06-29 21:57  geom3d\geom3d\Contents.m
     文件        1785  2011-01-11 18:57  geom3d\geom3d\createBasisTransform3d.m
     文件        1921  2011-06-20 19:30  geom3d\geom3d\createEulerAnglesRotation.m
     文件        4579  2011-03-21 03:07  geom3d\geom3d\createLine3d.m
     文件        3360  2011-05-27 21:16  geom3d\geom3d\createPlane.m
     文件        1311  2010-08-11 22:13  geom3d\geom3d\createRotation3dLineAngle.m
     文件        1865  2011-03-21 03:07  geom3d\geom3d\createRotationOx.m
     文件        1969  2011-03-21 03:07  geom3d\geom3d\createRotationOy.m
     文件        1878  2011-03-21 03:07  geom3d\geom3d\createRotationOz.m
     文件        1869  2011-03-21 03:07  geom3d\geom3d\createScaling3d.m
     文件         990  2011-03-21 03:07  geom3d\geom3d\createSphere.m
............此处省略174个文件信息

评论

共有 条评论