## 3 Region-Based Collision Avoidance Beaconless Geographic Routing
### Distance- and Angle-Based Collision Avoiding Scheme  
The proposed protocol uses two different types of timers in order to avoid collisions due to simultaneous broadcasting among neighbors: \(T_{max}\) and \(T_{interval}\). The values of these timers are given by the application during the network initializing stage. When a sender broadcasts its data to its neighbors, neighbors which are closer to the destination than the sender (in the greedy forwarding area) set their own timer as the following equation:  
\[W(c)=f(c)+f^{\prime}(c)+f^{\prime\prime}(c) \tag{1}\]  
where \(W(c)\) represents the total waiting time (ms) for the current node between zero and \(2*T_{max}\). Once a node sets its timer by a packet broadcasting, the timer cannot be reset or added by other broadcasting packets. During the timer process, packets would be added into the queue stack of the node in order to avoid collisions from multiple sources and destinations. As shown in Figure 5, the greedy area of a sender, which is closer to the destination than the sender, can be divided into multiple sector areas. Each sector is made by using the _Maximum_Radio_Range (MRR)_ and the sector size \(\alpha\) given by the application. The function \(f\) represent the waiting time for each sector, and the \(f^{\prime}\) represents the local waiting time for each node in a sector according to its position in the sector. The \(f^{\prime\prime}\) represents the priority time delay. If Node \(C\) is in the hidden-less area, then the function \(f^{\prime\prime}\) returns zero. Otherwise, it returns \(T_{max}\). For the function \(f\), it uses the following equation:  
\[f(c)=T_{max}\cdot\frac{\beta+MRR}{MRR} \tag{2}\]  
where \(dist(a,b)\) represents the Euclidean distance between the position of Nodes \(a\) and \(b\). \(\beta\) can be presented as the following equation:  
\[\beta=\alpha\cdot\left\lfloor\frac{dist(c,d)-dist(s,d)}{\alpha}\right\rfloor \tag{3}\]where the values \(s\), \(c\) and \(d\) are the geographic location of the sending node that broadcasts the data packet, the current node that successfully receives the data packet and the destination node, respectively. According to the sector size \(\alpha\), similarly-located sensor nodes have the same waiting time for the sector. The function \(f^{\prime}\) can be presented as the following equation:  
\[f^{\prime}(c)=T_{max}\cdot\frac{\gamma\cdot\alpha}{MRR} \tag{4}\]  
where the value \(\gamma\) falls between zero and one, according to the angle ratio of a sensor node in a sector area. A lower \(\gamma\) means that the node is closer to the line that is connecting the sender and the destination. Namely, the closest node from the source-destination line has the shortest timer in each sector area. The value \(\gamma\) for each node can be calculated as the following expression:  
\[\gamma=\left|\frac{\Theta}{\Theta^{\prime}}\right| \tag{5}\]  
where \(\Theta\) is the angle from the line connecting the sender and the destination to the current node \(c\), and \(\Theta^{\prime}\) is the angle from the line connecting the sender and the destination to the maximum sector angle (MSA). In the greedy routing mode, \(\Theta\) and \(\Theta^{\prime}\) vary from \(-90\) to \(90\). For example, as shown in Figure 5, Node \(c\) is in sector No. 3. The MSA value of the third sector is 43 degrees, and the angle of Node \(c\) is 17 degrees. In this case, this is about 0.4. Each MSA can be calculated with the sector size and two intersection points between the sender circle and the destination circle. \[MSA(\theta)=\delta+\cos^{-1}\left(\frac{r_{1}^{2}-r_{2}^{2}+D^{2}}{2r_{1}D}\right) \tag{6}\]  
where \(r_{1}\) could be represented as MRR and \(r_{2}\) could be the radius from the destination to each sector area. It could be as:  
\[r_{2}=dist(s,d)-MRR+n\cdot\alpha^{2} \tag{7}\]  
where \(n\) is the number of each sector area.