#5, First Floor, 4th Street , Dr. Subbarayan Nagar Kodambakkam, Chennai-600 024 pro@slogix.in

Office Address

  • #5, First Floor, 4th Street Dr. Subbarayan Nagar Kodambakkam, Chennai-600 024 Landmark : Samiyar Madam
  • pro@slogix.in
  • +91- 81240 01111

Social List

How to create Clusterhead in triangle based Sensor deployment using NS2?
Source Code

Clusterhead is elected in every cluster that is deployed in triangle structure.
TCL part :

proc cl_selection {m1 v1 m2 v2 w} {
global ns r nd min
set x_m [expr $m2 – $m1]
set y_m [expr $v2 – $v1]
set x_v [expr $x_m * $x_m]
set y_v [expr $y_m * $y_m]
set h_v [expr $x_v + $y_v]
set c_l [expr pow($h_v, 0.5)]
puts $r "distance of node $w from midpoint = $c_l"
if {$c_l < $min} {
set min $c_l
set nd $w
}
puts $r "minimum value $min and node $nd"
return $nd
}
proc area {a1 b1 a2 b2 a3 b3} {
set ax [expr $b2 – $b3]
set ay [expr $b3 – $b1]
set az [expr $b1 – $b2]
set axx [expr $ax * $a1]
set ayy [expr $ay * $a2]
set azz [expr $az * $a3]
set hx [expr $axx + $ayy + $azz]
set ar [expr $hx / 2.0]
set arr [expr abs($ar)]
puts "Distance between x1 and x2 = $arr"
return $arr
}
proc isinside {c1 d1 c2 d2 c3 d3 c d g} {
global now ns
set inside 0
set A [area $c1 $d1 $c2 $d2 $c3 $d3]
set A1 [area $c $d $c2 $d2 $c3 $d3]
set A2 [area $c1 $d1 $c $d $c3 $d3]
set A3 [area $c1 $d1 $c2 $d2 $c $d]
set AA [expr $A1 + $A2 + $A3]
set diff [expr $AA – $A]
puts "the A and $A yyyyyyyy AA and $AA and $diff"

if {$A == $AA || $diff < 10} {
set inside [expr $inside + 1]
puts "Nodes inside the triangle $g and $inside "
}
return $inside
}
set min 500
for {set i 0} {$i < $val(nn) } {incr i } { set now [$ns now] if {$xx($i) > 0 && $xx($i) < 200} {
if {$yy($i) < 200} {
set xx1 0
set yy1 0
set xx2 200
set yy2 0
set xx3 100
set yy3 200
set add_x [expr $xx1 + $xx2 + $xx3]
set midpoint_x [expr $add_x / 3]
set add_y [expr $yy1 + $yy2 + $yy3]
set midpoint_y [expr $add_y / 3]
set ins [isinside $xx1 $yy1 $xx2 $yy2 $xx3 $yy3 $xx($i) $yy($i) $i]
if {$ins == 1} {
$ns at [expr $now + 0.1] "$node_($i) color darkcyan"
set l1 [cl_selection $midpoint_x $midpoint_y $xx($i) $yy($i) $i]
puts "the color of node $i and $l1"
set CH $l1
}
}
}
}


Screenshots