?? orientlead.asv
字號:
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;
betfbegin=0;
if mark==1 %雙定向附合導線計算
betfbegin=azimuth1(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=azimuth1(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)=azimuth1(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=azimuth1(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
tt=leadcalculate(course(i-1),course(i),course(i+1),temp(3),g,f,dir,si,ni,pn,e,d,sid);
temp=temp+tt;
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);
betfbegin=azimuth1(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 + -