📄 inscribed.asv
字号:
function[cpp3,mr,tr]=inscribed1(sd,ms,ppm,e,d,sid)
%应用余枝搜索法自动搜索所有圆周角(组合角)条件=================
global pathname net_name c3_datafile
fit2=fopen(strcat(pathname,net_name,c3_datafile),'wt');
cpp3=[];
n=0;
tr=[];
mr=[];
for i=1;sd
cpp=[];temp1=[];
temp1=find(e==i|d==i);
if length(temp1)>0
xx=[e(temp1)d(temp1)];%存放外围点名
xx((xx==i))=[];
end
num=length(xx);
d1=[];d2=[];ds=[];
if num>2
numb=0;
for i0=1;num-1
for j0=i0+1:num
[dist,kdis]=findsid(xx(i0),xx(j0),e,d,sid); %是否存在边长观测
if kdis==1
numb=numb+1;
d1(numb)=xx(i0);
d2(numb)=xx(j0);
ds(numb)=dist;
end
end
end
end
dd1=zeros(1,length(d1));
dd2=zeros(1,length(d1));
%按1,2,3的顺序重新编号才能利用已有的函数进行搜索
for y1=1:length(d1)
for y1=1;num
if d1(y1)==xx(y)
dd1(y1)=y;
break;
end
end
for y=1:num
if d2(y1)==xx(y)
dd2(y1)=y;
break;
end
end
end
cpp=ccpoints(dd1',dd2',num,length(dd1),ds);
if isempty(cpp)~=1
for t=1:size(cpp,2)
n=n+1;
site=cpp{t};
cpp3{n}=xx(site);
mr=[mr i];
end
tr=[tr num];
end
end
%计算圆周角(组合角)闭合差和限差========================
err=[];
for i=1:size(cpp3,2)
site=cpp3{i};
n=length(site);
bet=[];
for j=1:n-1
bet(j)=beta1(site(j),mr(i),site(j+1),e,d,sid);
end
err1(i)=(sum(bet)-pi)/pi*180*3600;
err2(i)=(2*max(bet)-sum(bet))/pi*180*3600;
if abs(err1(i))<=abs(err2(i))
err(i)=err1(i);
else
err(i)=err2(i);
end
if abs(err(i))>1000
sss=comb(n-1);
bet111=sss*bet';
err(i)=min(bet111);
end
end
maxdiff=[];
n=size(cpp3,2);
for i=1:n
site=cpp3{i};
site=[site(end-1) site];
m=size(site,2);
w1=0;
for j=2:m-1
beta=beta1(site(j+1),site(j),mr(i),e,d,sid);
betb1=beta1(mr(i),site(j),site(j-1),e,d,sid);
betb2=beta1(mr(i),site(j+1),site(j),e,d,sid);
betab1=beta+betb1;
betab2=pi-beta1(site(j),mr(i),site(j+1),e,d,sid);
[s1,k1]=findsid(site(j),mr(i),e,d,sid);
[s2,k2]=findsid(site(j),site(j+1),e,d,sid);
a1=-sin(betab1)/sin(beta)/sin(betb1)*2062.65/s1;
a2=-sin(betab2)/sin(beta)/sin(betb2)*2062.65/s2;
ms1=ms^2+(s1/10000*ppm)^2;
ms2=ms^2+(s2/10000*ppm)^2;
w1=w1+ms1*a1^2+ms2*a2^2;
end
maxdiff(i)=2*sqrt(w1);
end
maxdiff(i)=2*sqrt(w1);
end
%============================
fprintf(fit2,' 圆周角(组合角)条件\n');
fprintf(fit2,' 中心点 环点 闭合差 限差\n');
fprintf(fit2,'=========================================\n');
sitefinal[];
for i=1;size(cpp3,2)
site=cpp3{i};
if abs(maxdiff(i))-abs(err(i))>=0
fprintf(fit2,' %5d %5d %5d %5d %5d %5d %5d %5d ',i,mr(i),site);
fprintf(fit2,' %10.3f %10.3f\n',err(i),maxdiff(i));
else
fprintf(fit2,'* * %5d %5d %5d %5d %5d %5d %5d %5d ',i,mr(i),site);
fprintf(fit2,' %10.3f %10.3f\n',err(i),maxdiff(i));
end
fprintf(fit2,'=========================================\n');
fclose(fit2);
open(strcat(pathname,net_name,c3_datafile));
return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -