function [kappa, ccurv] = curv_centre(C) | |
d = size(C, 1); % Dimensió de l'ambient | |
% Arestes | |
ar01 = C(:, 2:end-1) - C(:, 1:end-2); | |
ar12 = C(:, 3:end) - C(:, 2:end-1); | |
% Mètrica | |
g11 = sum(ar01.*ar01); | |
g12 = sum(ar01.*ar12); | |
g22 = sum(ar12.*ar12); | |
% Centres de curvatura | |
detG = g11.*g22 - g12.*g12; | |
lambda1 = (0.5*g11.*g22 - g12.*g12 - 0.5*g12.*g22)./detG; | |
lambda2 = (0.5*g11.*g12 + 0.5*g11.*g22)./detG; | |
ccurv = C(:, 1:end-2) + (ones(d, 1)*lambda1).*ar01; | |
ccurv = ccurv + (ones(d, 1)*lambda2).*ar12; | |
% Curvatura com a invers del radi | |
vradi = C(:, 1:end-2) - ccurv; | |
radi = sqrt(sum(vradi.*vradi)); | |
kappa = 1./radi; |