fill=blue!50\] coordinates[ (0,0,0) (0,1,0) (1,1,0) (1,0,0) ]{}; 3\[draw=none, fill=yellow!50\] coordinates[ (0,0,0.8) (0,1,0.8) (1,1,0.8) (1,0,0.8) ]{}; 3\[draw=none, fill=red!20\] coordinates[ (0,0,1.6) (0,1,1.6) (1,1,1.6) (1,0,1.6) ]{}; 3\[scatter, only marks\] file [./sensors.dat]{};

Basic terminology
-----------------

In this section, we give the basic terminology that we use in the described algorithm.

*Localizing* of a sensor network is assigning relative positions to each sensor node in the ambient space (in our case, 3D). When we assign positions to each node, we obtain a *point formation*. The point formation of a network is denoted by $\mathbb{F}$. It is a table that contains $2$ columns, and $n$ rows, where $n$ is the number of nodes in the network. The first column contains the IDs of the nodes, and the second column contains each node’s position in 3D Euclidean space.

A wireless sensor network is said to be *localizable* in $\mathbb{R}^d$ when the corresponding distance graph $G = (V, E)$ is *globally rigid*. In other words, every embedding of the vertices in $V$ with respect to the pairwise Euclidean distances determined by the edge set $E$ is isometric in $\mathbb{R}^d$. For more details on the localizability, we refer the reader to [@theory; @understandinglocalizability; @localizabilityanddistributed].

Every sensor node in the 