From 57c5de06025529db7791b8f193f0bf8901efd1c8 Mon Sep 17 00:00:00 2001 From: "m.uy" Date: Fri, 8 Mar 2024 15:18:50 +0100 Subject: [PATCH] first commit --- createVisibilityGraph.m | 34 ++++++++++++++++++++++++++++++++++ ex1.m | 15 +++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 createVisibilityGraph.m create mode 100644 ex1.m diff --git a/createVisibilityGraph.m b/createVisibilityGraph.m new file mode 100644 index 0000000..2d71c50 --- /dev/null +++ b/createVisibilityGraph.m @@ -0,0 +1,34 @@ +function [nbNodes, visibilityGraph] = createVisibilityGraph(connectionMatrix, points2D) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%function [nbNodes, visibilityGraph] = createVisibilityGraph(connectionMatrix, points2D) +% +% Task: Create a visibility graph from a connection matrix and a set of 2D points +% +% Inputs: +% -connectionMatrix: matrix of connection if cell is equal to 1 there is an edge between the corresponding points, cell is 0 otherwise +% -points2D: coordinates of the vertices of the graph +% +% Outputs: +% -nbNodes: the number of nodes of this graph +% -visibilityGraph: a matrix containing the distance between connected nodes +% (NaN refers to not connected nodes) +% The matrix has a size of (nbNodes+2)x(nbNodes+2) +% +% Guillaume Gibert (guillaume.gibert@ecam.fr) +% 19/03/2021 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +nbNodes = size(points2D,1)-2; +visibilityGraph = NaN(nbNodes+2, nbNodes+2); + +for l_row=1:size(connectionMatrix,1) + for l_col=1:size(connectionMatrix,2) + if (connectionMatrix(l_row, l_col) == 1) + % computes the distance between the 2 points + distance = sqrt( (points2D(l_row,1)-points2D(l_col,1))^2 + (points2D(l_row,2)-points2D(l_col,2))^2); + visibilityGraph(l_row, l_col) =distance; + end + end +end + + diff --git a/ex1.m b/ex1.m new file mode 100644 index 0000000..8404b07 --- /dev/null +++ b/ex1.m @@ -0,0 +1,15 @@ +nbNodes = 8; + +visibilityGraph = NaN(nbNodes+2, nbNodes+2); +visibilityGraph(1,1) =0;visibilityGraph(1,2) =11;visibilityGraph(1,3) =10; +visibilityGraph(2,1) =11;visibilityGraph(2,3) =18;visibilityGraph(2,9) =11; +visibilityGraph(3,1) =10;visibilityGraph(3,2) =18;visibilityGraph(3,4) =11;visibilityGraph(3,5) =32; +visibilityGraph(4,3) =11;visibilityGraph(4,5) =22;visibilityGraph(4,8) =15;visibilityGraph(4,9) =18; +visibilityGraph(5,3) =32;visibilityGraph(5,4) =22;visibilityGraph(5,6) =11;visibilityGraph(5,8) =20;visibilityGraph(5,9) =37; +visibilityGraph(6,5) =11;visibilityGraph(6,7) =20;visibilityGraph(6,10) =10; +visibilityGraph(7,6) =20;visibilityGraph(7,8) =11;visibilityGraph(7,9) =31;visibilityGraph(7,10) =11; +visibilityGraph(8,4) =15;visibilityGraph(8,5) =20;visibilityGraph(8,7) =11; +visibilityGraph(9,2) =11;visibilityGraph(9,4) =18;visibilityGraph(9,5) =37;visibilityGraph(9,7) =31; +visibilityGraph(10,6) =10;visibilityGraph(10,7) =11; + +[distanceToNode, parentOfNode] = dijkstra(nbNodes, visibilityGraph); \ No newline at end of file