Adrià Vilanova Martínez | ce8597a | 2021-09-21 18:26:59 +0200 | [diff] [blame] | 1 | function [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; |