# Zeigerdiagramm synchronisierte, einphasige Last an Drehspannung

rechtsDrehfeld=0;
useCompass=1;
if rechtsDrehfeld >0
   phi=-120;
   fprintf('Rechtdrehfeld: synchrone Belastung\n');
else
   phi=120;
   fprintf('Linksdrehfeld: asynchrone Belastung\n');
end;
function zeiger=zeiger(z,desc, farbe, useCompass)
  abstand=0.25;
  zeiger=z;
  if useCompass <= 0
   quiver(0,0, real(z), imag(z),0, 'AutoScale','on' , 'MaxHeadSize', 0.1/norm(z), 'Color' ,farbe);
 else
   h=compass(real(z), imag(z));
   set(h,'color', farbe);
 end;
  text( real(z), vorzeichen(imag(z)) *abstand+ imag(z),desc , 'Color' , farbe);
end;

function vorzeichen=vorzeichen(x)
   if x == 0
      vorzeichen=1;
   else
      vorzeichen=sign(x);
   end;
end;
function runden=runden(x)
 runden=vorzeichen(x)*ceil(abs(x));
end;

fig=figure('NumberTitle', 'off', 'Name', 'Synchronisation einer einphasigen Last');

z=@(betrag, winkel) betrag*exp(j*winkel*pi/180);

U1N=z(1,0);
U2N=z(1,phi);
U3N=z(1,-phi);
if rechtsDrehfeld >0
   UR=z(3,0);
   UL=z(sqrt(3), -30);
   UC=z(sqrt(3),30);
   UStern=z(2,180);
   I1=z(3,0);
   I2=z(3,phi);
   I3=z(3,-phi);
 else
    UR=z(-3,0);
    UL=z(sqrt(21), atand(3*sqrt(3))+90);
    UC=z(sqrt(21),  -atand(3*sqrt(3))-90);
    UStern=z(4,0);
    I1=z(3,180);
    I2=z(3*sqrt(7),atand(3*sqrt(3)));
    I3=z(3*sqrt(7),-atand(3*sqrt(3)));
end;
URE=[real(UR),real(UL),real(UC), real(UStern)];
UIM=[imag(UR),imag(UL),imag(UC), imag(UStern)];

IRE=[real(I1),real(I2),real(I3)];
IIM=[imag(I1),imag(I2),imag(I3)];

subplot(1,2,1);

zeiger(U1N, 'U_{1N}/U_N', 'b', useCompass);
hold on;
zeiger(U2N, 'U_{2N}/U_N', 'b', useCompass);
zeiger(U3N, 'U_{3N}/U_N', 'b', useCompass);
zeiger(UR, 'U_R/U_N', 'b', useCompass);
zeiger(UL, 'U_L/U_N', 'b', useCompass);
zeiger(UC, 'U_C/U_N', 'b', useCompass);
zeiger(UStern, 'U_{Stern}/U_N', 'b' , useCompass);
axis equal;
if useCompass <= 0
   xlim([runden(min(URE)),runden(max(URE)) ]);
   ylim([runden(min(UIM)),runden(max(UIM))]);
end;
title('Spannungen');
xlabel('Re');
ylabel('Im');
grid on;

subplot(1,2,2);
zeiger(I1, 'U_N/R*I_{1}', 'r', useCompass);
hold on;
zeiger(I2, 'U_N/R*I_{2}', 'r', useCompass);
zeiger(I3, 'U_N/R*I_{3}', 'r', useCompass);
axis equal;
if useCompass <= 0
   xlim([runden(min(IRE)),runden(max(IRE)) ]);
   ylim([runden(min(IIM)),runden(max(IIM))]);
end
title('Ströme');
xlabel('Re');
ylabel('Im');
grid on;
