% lokalni reprezentace reseni
N_p = ((N + 2) * (N + 1)) / 2; % pocet uzlu na 1 elementu = pocet neznamych parametru (koeficientu interpol. polynomu na elementu)
N_fp = N + 1; % pocet uzlu na 1 hrane
N_faces = 3; % 3 hrany pro kazdy element ve 2D
NODETOL = 1e-12;

N_v = size(P,2); % pocet uzlu v siti
K = size(E,2); % pocet elementu v siti

[x,y] = OptimalNodes2D(N); [r,s] = xytors(x,y);

v_1 = E(1,:); v_2 = E(2,:); v_3 = E(3,:);
x = 0.5 * (-(r + s)' * P(1,v_1) + (r + 1)' * P(1,v_2) + (s + 1)' * P(1,v_3));
y = 0.5 * (-(r + s)' * P(2,v_1) + (r + 1)' * P(2,v_2) + (s + 1)' * P(2,v_3));

fmask1 = find(abs(s + 1) < NODETOL); % cisla uzlu na hrane spojujici 1. a 2. vrchol trojuhelniku
fmask2 = find(abs(r + s) < NODETOL); % cisla uzlu na hrane spojujici 2. a 3. vrchol trojuhelniku
fmask3 = find(abs(r + 1) < NODETOL); % cisla uzlu na hrane spojujici 3. a 1. vrchol trojuhelniku
Fmask = [fmask1; fmask2; fmask3]'; % ve sloupcich cisla ulzu na I, ktere jsou na hranach
Fx = x(Fmask(:),:); Fy = y(Fmask(:),:);

[EtoE,EtoF] = Connectivity2D();

[mapM, vmapM, mapP, vmapP, mapB, vmapB] = BuildMaps2D();