Sync from remote server: 2025-10-12 18:56:41
This commit is contained in:
88
ATD/CalcoloStar.m
Executable file
88
ATD/CalcoloStar.m
Executable file
@@ -0,0 +1,88 @@
|
||||
%% Funzione che calcola i segmenti della stella
|
||||
function SegStar = CalcoloStar(X_TuL,Z_TuL,Xstar_TuL,Zstar_TuL,Verso,Segmenti,Peso,jj,SegStar,Nnodi,dim)
|
||||
|
||||
for J = 1:dim
|
||||
N1 = Segmenti(J,1); % Numero primo punto
|
||||
N1b = Segmenti(J,2); % Numero primo punto b
|
||||
C1 = isnan(Segmenti(J,2)); % cerco se la seconda colonna è un NaN
|
||||
N2 = Segmenti(J,3); % Numero secondo punto
|
||||
[~,chc] = size(Segmenti);
|
||||
if chc == 3 % non c'è la quarta colonna
|
||||
C2 = 1;
|
||||
else
|
||||
N2b = Segmenti(J,4); % Numero secondo punto b
|
||||
C2 = isnan(Segmenti(J,4)); % cerco se la quarta colonna è un NaN
|
||||
end
|
||||
X1 = X_TuL;
|
||||
Xstar1 = Xstar_TuL;
|
||||
Z1 = Z_TuL;
|
||||
Zstar1 = Zstar_TuL;
|
||||
X2 = X_TuL;
|
||||
Xstar2 = Xstar_TuL;
|
||||
Z2 = Z_TuL;
|
||||
Zstar2 = Zstar_TuL;
|
||||
|
||||
if C1 == 0 % uso la media fra due nodi per il punto di inizio
|
||||
X1(N1,jj) = (X_TuL(N1,jj) + X_TuL(N1b,jj))/2;
|
||||
Z1(N1,jj) = (Z_TuL(N1,jj) + Z_TuL(N1b,jj))/2;
|
||||
Xstar1(Nnodi-N1,jj) = (Xstar_TuL(Nnodi-N1,jj) + Xstar_TuL(Nnodi-N1b,jj))/2;
|
||||
Zstar1(Nnodi-N1,jj) = (Zstar_TuL(Nnodi-N1,jj) + Zstar_TuL(Nnodi-N1b,jj))/2;
|
||||
end
|
||||
if C2 == 0 % uso la media fra due nodi per il punto di arrivo
|
||||
X2(N2,jj) = (X_TuL(N2,jj) + X_TuL(N2b,jj))/2;
|
||||
Z2(N2,jj) = (Z_TuL(N2,jj) + Z_TuL(N2b,jj))/2;
|
||||
Xstar2(Nnodi-N2,jj) = (Xstar_TuL(Nnodi-N2,jj) + Xstar_TuL(Nnodi-N2b,jj))/2;
|
||||
Zstar2(Nnodi-N2,jj) = (Zstar_TuL(Nnodi-N2,jj) + Zstar_TuL(Nnodi-N2b,jj))/2;
|
||||
end
|
||||
|
||||
if Verso(J,1) == 1 && Verso (J,2) == 1 % Calcolo Orario per entrambi i punti (standard)
|
||||
if N1==0
|
||||
SegStar(J,jj) = real(((0 - X2(N2,jj)).^2+(0-Z2(N2,jj)).^2).^0.5);
|
||||
elseif N2==0
|
||||
SegStar(J,jj) = real((((X1(N1,jj)- 0)).^2+(Z1(N1,jj)-0).^2).^0.5);
|
||||
else
|
||||
SegStar(J,jj) = real(((X1(N1,jj)- X2(N2,jj)).^2+(Z1(N1,jj)-Z2(N2,jj)).^2).^0.5);
|
||||
end
|
||||
elseif Verso(J,1) == 1 && Verso (J,2) == -1 % Calcolo Orario il primo, antiorario per il secondo punto
|
||||
SegStar(J,jj) = real(((X1(N1,jj)-Xstar2(Nnodi-N2,jj)).^2+(Z1(N1,jj)-Zstar2(Nnodi-N2,jj)).^2).^0.5);
|
||||
elseif Verso(J,1) == 1 && Verso (J,2) == 0 % Calcolo Orario il primo, media fra orario e antiorario per il secondo punto
|
||||
Peso3 = Peso(J,3);
|
||||
Peso4 = Peso(J,4);
|
||||
Xmedium2 = (Peso3*X2(N2,jj) + Peso4*Xstar2(Nnodi-N2,jj))/(Peso3+Peso4);
|
||||
Zmedium2 = (Peso3*Z2(N2,jj) + Peso4*Zstar2(Nnodi-N2,jj))/(Peso3+Peso4);
|
||||
SegStar(J,jj) = real(((X1(N1,jj)-Xmedium2).^2+(Z1(N1,jj)-Zmedium2).^2).^0.5);
|
||||
elseif Verso(J,1) == -1 && Verso (J,2) == -1 % Calcolo antiorario per entrambi
|
||||
SegStar(J,jj) = real(((Xstar1(Nnodi-N1,jj)-Xstar2(Nnodi-N2,jj)).^2+(Zstar1(Nnodi-N1,jj)-Zstar2(Nnodi-N2,jj)).^2).^0.5);
|
||||
elseif Verso(J,1) == -1 && Verso (J,2) == 1 % Calcolo antiorario per il primo, orario per il secondo
|
||||
SegStar(J,jj) = real(((X2(N2,jj)-Xstar1(Nnodi-N1,jj)).^2+(Z2(N2,jj)-Zstar1(Nnodi-N1,jj)).^2).^0.5);
|
||||
elseif Verso(J,1) == -1 && Verso (J,2) == 0 % Calcolo antiorario il primo, media fra orario e antiorario per il secondo punto
|
||||
Peso3 = Peso(J,3);
|
||||
Peso4 = Peso(J,4);
|
||||
Xmedium2 = (Peso3*X2(N2,jj) + Peso4*Xstar2(Nnodi-N2,jj))/(Peso3+Peso4);
|
||||
Zmedium2 = (Peso3*Z2(N2,jj) + Peso4*Zstar2(Nnodi-N2,jj))/(Peso3+Peso4);
|
||||
SegStar(J,jj) = real(((Xstar1(Nnodi-N1,jj)-Xmedium2).^2+(Zstar1(Nnodi-N1,jj)-Zmedium2).^2).^0.5);
|
||||
elseif Verso(J,1) == 0 && Verso (J,2) == 0 % Calcolo media fra orario e antiorario per entrambi
|
||||
Peso1 = Peso(J,1);
|
||||
Peso2 = Peso(J,2);
|
||||
Peso3 = Peso(J,3);
|
||||
Peso4 = Peso(J,4);
|
||||
Xmedium1 = (Peso1*X1(N1,jj) + Peso2*Xstar1(Nnodi-N1,jj))/(Peso1+Peso2);
|
||||
Xmedium2 = (Peso3*X2(N2,jj) + Peso4*Xstar2(Nnodi-N2,jj))/(Peso3+Peso4);
|
||||
Zmedium1 = (Peso1*Z1(N1,jj) + Peso2*Zstar1(Nnodi-N1,jj))/(Peso1+Peso2);
|
||||
Zmedium2 = (Peso3*Z2(N2,jj) + Peso4*Zstar2(Nnodi-N2,jj))/(Peso3+Peso4);
|
||||
SegStar(J,jj) = real(((Xmedium1-Xmedium2).^2+(Zmedium1-Zmedium2).^2).^0.5);
|
||||
elseif Verso(J,1) == 0 && Verso (J,2) == 1 % Calcolo media fra orario e antiorario per il primo, orario per il secondo
|
||||
Peso1 = Peso(J,1);
|
||||
Peso2 = Peso(J,2);
|
||||
Xmedium1 = (Peso1*X1(N1,jj) + Peso2*Xstar1(Nnodi-N1,jj))/(Peso1+Peso2);
|
||||
Zmedium1 = (Peso1*Z_TuL(N1,jj) + Peso2*Zstar_TuL(Nnodi-N1,jj))/(Peso1+Peso2);
|
||||
SegStar(J,jj) = real(((X2(N2,jj)-Xmedium1).^2+(Z2(N1,jj)-Zmedium1).^2).^0.5);
|
||||
elseif Verso(J,1) == 0 && Verso (J,2) == -1 % Calcolo media fra orario e antiorario per il primo, antiorario per il secondo
|
||||
Peso1 = Peso(J,1);
|
||||
Peso2 = Peso(J,2);
|
||||
Xmedium1 = (Peso1*X1(N1,jj) + Peso2*Xstar1(Nnodi-N1,jj))/(Peso1+Peso2);
|
||||
Zmedium1 = (Peso1*Z1(N1,jj) + Peso2*Zstar1(Nnodi-N1,jj))/(Peso1+Peso2);
|
||||
SegStar(J,jj) = real(((Xstar2(Nnodi-N2,jj)-Xmedium1).^2+(Zstar2(Nnodi-N2,jj)-Zmedium1).^2).^0.5);
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user