You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.6 KiB
104 lines
3.6 KiB
% clear all
|
|
% close all
|
|
% clearvars
|
|
% circlebreakpoints{1}=[1,11];
|
|
% circlebreakpoints{1}=[1,5];
|
|
% circle=generateTestFigures(5);
|
|
circle=generateTestFigures(8);
|
|
for CURVE=1:length(circle)
|
|
newcirclecurve=circle{CURVE};
|
|
circle{CURVE}(1:3:end,:)=circle{CURVE}(1:3:end,:)./circle{CURVE}(3:3:end,:);
|
|
circle{CURVE}(2:3:end,:)=circle{CURVE}(2:3:end,:)./circle{CURVE}(3:3:end,:);
|
|
P3=[]; W3=[]; Xi3=[]; W2=[]; P=[]; P2=[]; W=[]; counter=1; ctr=1;
|
|
starter=1;
|
|
ender=size(circle{CURVE},1)/3;
|
|
testShape=circle{CURVE}(((starter-1)*3+1):(ender*3),:);
|
|
nb=size(testShape,1)/3;
|
|
p=size(testShape,2)-1;
|
|
% Xi=[zeros(1,p) 0:nb nb*ones(1,p)];
|
|
Xitemp=repmat(0:1:nb,p,1);
|
|
Xi2=[0 Xitemp(:)' nb];
|
|
if starter==ender
|
|
P=testShape(1:2,:);
|
|
W2=testShape(3,:);
|
|
% figure(1);
|
|
% % plotNURBScurve(2,p,Xi2,P(1:2,:),W2)
|
|
% hold on
|
|
else
|
|
n=length(Xi2)-p-1;
|
|
[n_el,C,IEN2] = Extract_Basis_1D(p,n,Xi2);
|
|
P2{nb}=0;
|
|
W{nb}=0;
|
|
P2(1:nb)={zeros(2,n)};
|
|
W(1:nb)={zeros(1,n)};
|
|
P=zeros(2,n);
|
|
W2=zeros(1,n);
|
|
figure(1);
|
|
for i=1:nb
|
|
% % plotNURBScurve(2,p,[zeros(1, p+1) ones(1, p+1)],testShape(((i-1)*3+1):(3*i-1),:),testShape((3*i),:))
|
|
% hold on
|
|
P2{i}(:,IEN2(:,i))=testShape(((i-1)*3+1):(3*i-1),:)/C(:,((i-1)*(p+1))+1:(i*(p+1)));
|
|
W{i}(:,IEN2(:,i))=testShape(3*i,:)/C(:,((i-1)*(p+1))+1:(i*(p+1)));
|
|
end
|
|
for i=1:2
|
|
for j=1:n
|
|
counter=0;
|
|
for k=1:nb
|
|
if P2{k}(i,j)~=0
|
|
P(i,j)=P(i,j)+(P2{k}(i,j));
|
|
counter=counter+1;
|
|
end
|
|
end
|
|
if counter==0
|
|
counter=1;
|
|
end
|
|
P(i,j)=P(i,j)/counter;
|
|
end
|
|
end
|
|
for j=1:n
|
|
counter=0;
|
|
for k=1:nb
|
|
if P2{k}(i,j)~=0
|
|
W2(j)=W2(j)+(W{k}(j));
|
|
counter=counter+1;
|
|
end
|
|
end
|
|
if counter~=0
|
|
W2(j)=W2(j)/counter;
|
|
else
|
|
W2(j)=1;
|
|
end
|
|
end
|
|
end
|
|
% W2(2:(end-1))=W2(2:(end-1))+2*rand(1,length(W2)-2);
|
|
P3(:,(ctr):(ctr+length(W2)-1))=P(:,1:(end));
|
|
W3(:,(ctr):(ctr+length(W2)-1))=W2(1:(end));
|
|
Xitemp=repmat(0:1:((length(W3))/(p+1)),p+1,1);
|
|
Xi3=Xi2;
|
|
ctr=ctr+length(W2);
|
|
% figure(2);
|
|
% plotNURBScurve(2,p,Xi,P(1:2,:),W2)
|
|
% hold on
|
|
newtestShape{segment}=testShape;
|
|
% for i=1:nb
|
|
% % P=P.*W2;
|
|
% newtestShape{segment}(((i-1)*3+1):(3*i-1),:)=P(:,IEN2(:,i))*C{i};
|
|
% newtestShape{segment}(3*i,:)=W2(:,IEN2(:,i))*C{i};
|
|
% figure(3)
|
|
% plotNURBScurve(2,p,[zeros(1, p+1) ones(1, p+1)],newtestShape{segment}(((i-1)*3+1):(3*i-1),:),newtestShape{segment}((3*i),:))
|
|
% hold on
|
|
% end
|
|
newcirclecurve(((starter-1)*3+1):(ender*3),:)=newtestShape{segment};
|
|
newcircle{CURVE}=newcirclecurve;
|
|
newcurveCP{CURVE}=P3;
|
|
newcurveW{CURVE}=W3;
|
|
newcurveXi{CURVE}=Xi3;
|
|
end
|
|
% clefbreakpoints{1}=[15,20,28,41,43,50,52];
|
|
% clefbreakpoints{2}=[2,5,10,17,19,25];
|
|
% clefbreakpoints{3}=[8,9];
|
|
% clefbreakpoints{4}=[12];
|
|
bkpts{1}= [5];
|
|
clear CP W Xi
|
|
CP=newcurveCP; W=newcurveW; Xi=newcurveXi;
|
|
|