function [R,K, d] = rigidityMatrixFnc (edgeL) %% Fungsi ini digunakan untuk menggenerasi fungsi rigidity R. %% diaman fungsi tersebut adalah hasil turunan dari fungsi edge addpath("./networks-toolbox"); pkg load symbolic % generasi koneksi bentuk incidence tmp = edgeL2adj(edgeL); d = ones(numEdges(tmp),1); printf("Jumlah Edge : %i \n", length(d)); gInc = adj2inc(tmp); tmp = numNodes(adj2adjL(tmp)); printf("Jumlah Robot : %i \n", tmp); % generasi vector error menggunakan matrix % koneksi tmp = getNodes(gInc,'adjacency'); K = kron(adj2inc(edgeL2adj(edgeL))',eye(2)); edgeVector = @(x,k) k*x; % hasil turunan dari fungsi edge str = "errBlockDiagonal = @(errVec) (blkdiag("; for i = 1:2:(length(tmp)*2)-2 str = strcat(str,sprintf("errVec(%i:%i)', ",i,i+1)); endfor str = strcat(str,sprintf("errVec(%i:%i)' ));",i+2,i+3)); % return sebagai fungsi R eval(str); R = @(x,k) errBlockDiagonal(edgeVector(x,k))*k; endfunction