⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 orientlead1.m

📁 利用MATLAB实现了对测量中的平面网
💻 M
字号:
function[closediff,err]=orientlead(mark,course,si,ni,pn,e,d,sid,g,f,dir,x0,y0)
%计算平面网闭合以及附合导线的闭合差
temp=zeros(1,5);%用于存放allangle,alldistance,anglef,detax,detay,并对它们赋0
closediff=zeros(1,5);
err=0;
if mark==1  %双定向附合导线计算
    betfbegin=azimuth(x0(course(1)),y0(course(1)),x0(course(2)),y0(course(2)));
    temp(3)=betfbegin;
    for i=2:size(course,2)-2
        temp=temp+leadcalculate(course(i-1),course(i),course(i+1),temp(3),g,f,dir,si,ni,pn,e,d,sid);
    end
    sizeline=size(course,2);
    allangle=temp(1)+beta4(course(sizeline-2),course(sizeline-1),course(sizeline),g,f,dir,si,ni,pn);
    alldistance=temp(2);
    detax=temp(4);
    detay=temp(5);
    closediff(1)=detax-(x0(course(size(course,2)-1))-x0(course(2)));
    closediff(2)=detay-(y0(course(size(course,2)-1))-y0(course(2)));
    betffinal=azimuth(x0(course(sizeline-1)),y0(course(sizeline-1)),x0(course(sizeline)),y0(course(sizeline)));
    closediff(3)=abs(mod((allangle-(betffinal-betfbegin+(size(course,2)-2)*pi))/pi*180,360)-360)*3600;
    closediff(4)=sqrt(closediff(1)^2+closediff(2)^2);
    closediff(5)=alldistance/closediff(4);
    if mod((allangle-(betffinal-betfbegin+(size(course,2)-2)*pi))/pi*180,360)>180
        closediff(3)=abs(mod((allangle-(betffinal-betfbegin+(size(course,2)-2)*pi))/pi*180,360)-360)*3600;
    else
        closediff(3)=abs(mod((allangle-(betffinal-betfbegin+(size(course,2)-2)*pi))/pi*180,360))*3600;
    end
elseif mark==2%单定向附合导线计算
    temp(3)=azimuth(x0(course(1)),y0(course(1)),x0(course(2)),y0(course(2)));
    for i=2:size(course,2)-1
         temp=temp+leadcalculate(course(i-1),course(i),course(i+1),temp(3),g,f,dir,si,ni,pn,e,d,sid);
    end
    alldistance=temp(2);
    detax=temp(4);
    detay=temp(5);
    sizeline=size(course,2);
    closediff(1)=detax-(x0(course(sizeline))-x0(course(2)));
    closediff(2)=detay-(y0(course(sizeline))-y0(course(2)));
    closediff(4)=sqrt(closediff(1)^2+closediff(2)^2);
    closediff(5)=alldistance/closediff(4);
elseif mark==3  %无定向附合导线计算
    if length(course)==2
        [s,k]=findsid(course(1),course(2),e,d,sid);
        af=azimuth(x0(course(1)),y0(course(1)),x0(course(2)),y0(course(2)));
        closediff(1)=x0(course(2))-x0(course(1))-s*cos(af);
        closediff(2)=y0(course(2))-y0(course(1))-s*sin(af);
    else
        temp(3)=pi/2;
        [temp(5),k3]=findsid(course(1),course(2),e,d,sid);
        for i=2:size(course,2)-1
            temp=temp+leadcalculate(course(i-1),course(i),course(i+1),temp(3),g,f,dir,si,ni,pn,e,d,sid);
        end
        alldistance=temp(2);
        detax=temp(4);
        detay=temp(5);
        closediff(1)=detax;
        closediff(2)=detay;
        closediff(4)=sqrt(closediff(1)^2+closediff(2)^2)-sqrt((x0(course(size(course,2)))-x0(course(1)))^2+(y0(course(size(course,2)))-y0(course(1)))^2);
        closediff(5)=alldistance/closediff(4);
        closediff(1)=0;
        closediff(2)=0;
    end
elseif mark==4    %闭合导线计算
    n=size(course,2);
    n
   % betfbegin=azimuth(x0(course(n-1)),y0(course(n-1)),x0(course(1)),y0(course(1)));
   x0(course(n-1))
     betfbegin=azimuth(x0(course(n-1)),y0(course(n-1)),x0(course(1)),y0(course(1)));
    temp(3)=betfbegin;
    temp=temp+leadcalculate(course(n-1),course(n),course(2),temp(3),g,f,dir,si,ni,pn,e,d,sid);
    for i=2:n-1
        temp=temp+leadcalculate(course(i-1),course(i),course(i+1),temp(3),g,f,dir,si,ni,pn,e,d,sid);
    end
    allangle=temp(1);
    alldistance=temp(2);
    detax=temp(4);
    detay=temp(5);
    closediff(1)=detax;
    closediff(2)=detay;
    closediff(3)=abs(mod((2*pi*n-allangle-(n-3)*pi)/pi*180,360)-360)*3600;
    if mod((2*pi*n-allangle-(n-3)*pi)/pi*180,360)>180
        closediff(3)=abs(mod((2*pi*n-allangle-(n-3)*pi)/pi*180,360)-360)*3600;
    else
        closediff(3)=abs(mod((2*pi*n-allangle-(n-3)*pi)/pi*180,360))*3600;
    end
    closediff(4)=sqrt(closediff(1)^2+closediff(2)^2);
    closediff(5)=alldistance/closediff(4);
end
return

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -