function kresli_primku(a,b)
%kresli_primku - nakresli primku ze 2 bodu (v R^2) uloha 78
%a,b..dva body v rovine
%volani:
%kresli_primku([1 1],[1 -2]) rovnobezna s osou y
%kresli_primku([1 1],[2 1])  rovnobezna s osou x
%kresli_primku([1 1],[2 2])
%kresli_primku([1 1],[2 -2])

if length(a)~=2 || length(b)~=2
        error('Zadejte DVOUprvkove vektory!')
end

if all(a==b)    %jedna se o tentyz jeden bod
    error('Nebyla zadana primka!')
end

%rovnice primky
s=b-a;
n=[s(2) -s(1)];
c=n*a'; %prava strana normalove rovnice n1 x + n2 y = c

if n(1)~=0  %primka neni rovnobeyna s osou x
    xp=c/n(1);
else
    xp=0;
end

if n(2)~=0  %primka neni rovnobeyna s osou y
    yp=c/n(2);
else
    yp=0;
end

%vypocet rozsahu os:
xmin=min([a(1) b(1) xp])-1; %minimum na ose x
xmax=max([a(1) b(1) xp])+1; %maximum na ose x
ymin=min([a(2) b(2) yp])-1; %minimum na ose y
ymax=max([a(2) b(2) yp])+1; %maximum na ose y

%data pro kresleni

if s(2)==0  %primka je rovnobeyna s osou x
    x=[xmin xmax];
    y=[a(2) a(2)];
elseif  s(1)==0 %primka je rovnobeyna s osou y
    x=[a(1) a(1)];
    y=[ymin ymax];
else
    x=[xmin xmax];
    y=(c-n(1)*x)/n(2);
end
%primka
plot(x,y,'r');
axis equal
hold on
%pridame body a osy
plot(a(1),a(2),'r.','Markersize',10)
plot(b(1),b(2),'r.','Markersize',10)
plot([xmin xmax],[0 0],'k')
plot([0 0],[ymin ymax],'k')


