blob: 0051a989c1e58cffe13123a6d3dd02c209134c90 [file] [log] [blame]
Adrià Vilanova Martínezce8597a2021-09-21 18:26:59 +02001function [kappa, ccurv] = curv_centre(C)
2 d = size(C, 1); % Dimensió de l'ambient
3
4 % Arestes
5 ar01 = C(:, 2:end-1) - C(:, 1:end-2);
6 ar12 = C(:, 3:end) - C(:, 2:end-1);
7
8 % Mètrica
9 g11 = sum(ar01.*ar01);
10 g12 = sum(ar01.*ar12);
11 g22 = sum(ar12.*ar12);
12
13 % Centres de curvatura
14 detG = g11.*g22 - g12.*g12;
15 lambda1 = (0.5*g11.*g22 - g12.*g12 - 0.5*g12.*g22)./detG;
16 lambda2 = (0.5*g11.*g12 + 0.5*g11.*g22)./detG;
17 ccurv = C(:, 1:end-2) + (ones(d, 1)*lambda1).*ar01;
18 ccurv = ccurv + (ones(d, 1)*lambda2).*ar12;
19
20 % Curvatura com a invers del radi
21 vradi = C(:, 1:end-2) - ccurv;
22 radi = sqrt(sum(vradi.*vradi));
23 kappa = 1./radi;