基于角度的方向ns2不起作用

时间:2015-10-06 13:25:12

标签: ns2

我正在尝试使用角度定位ns2中的节点。它不起作用。我做错了什么?

set ns [new Simulator]

set nf [open out.nam w]
$ns namtrace-all $nf

set n 4

set router1 [$ns node]
set router2 [$ns node]
$ns duplex-link $router1 $router2 45Mb 75ms DropTail

set x_sndr 50
set x_rcvr 300

set offset 45

set angle [expr -1*$offset*$n/2]

$ns duplex-link-op $router1 $router2 orient right

for {set i 1} {$i <= $n} {incr i} {
    set sndr($i) [$ns node]
    set rcvr($i) [$ns node]
    $ns duplex-link $router1 $sndr($i) 10Mb 10ms DropTail
    $ns duplex-link $router2 $rcvr($i) 10Mb 10ms DropTail

    set angle [expr $angle+$offset]
    puts "$angle"
    $ns duplex-link-op $router2 $rcvr($i) orient ($angle)
    $ns duplex-link-op $sndr($i) $router1 orient (-1*$angle)
}

$ns duplex-link-op $router1 $router2 orient right

$ns 
close $
exec nam out.
exit 0

在for循环中,我设置duplex-link-op以使用角度以特定方式定向。无论我为角度设置什么值,方向都不会改变。

1 个答案:

答案 0 :(得分:0)

最后回答我自己的问题,

NS2 / NAM的文档不正确,并且没有正确说明如何使用角度作为属性来定位链接。

this页面所示,它只是说明了

  

可能是以下之一:orient,color,queuePos,   标签。方向或链接方向定义了之间的角度   链接和水平。可选的方向值可以是不同的   度数或文字如右(0),右上(45),右下(-45),   左(180),左上(135),左下(-135),上(90),下(-90)。该   queuePos或队列的位置定义为队列的角度   水平线。每个属性的示例如下   以下:

     

$ns duplex-link-op orient right ;# orientation is set as right. The order   ;# in which links are created in nam   ;# depends on calling order of this function. $ns duplex-link-op color "green" $ns duplex-link-op   queuePos 0.5 $ns duplex-link-op label "A"

但实际上你需要通过在角度值

附加单词deg来定位

例如:$ns duplex-link-op orient 90应为$ns duplex-link-op orient 90deg

所以代码如下:

set ns [new Simulator]

set nf [open out.nam w]
$ns namtrace-all $nf

set n 4

set router1 [$ns node]
set router2 [$ns node]
$ns duplex-link $router1 $router2 45Mb 75ms DropTail

set x_sndr 50
set x_rcvr 300

set offset 45

set angle [expr -1*$offset*$n/2]

$ns duplex-link-op $router1 $router2 orient right

for {set i 1} {$i <= $n} {incr i} {
    set sndr($i) [$ns node]
    set rcvr($i) [$ns node]
    $ns duplex-link $router1 $sndr($i) 10Mb 10ms DropTail
    $ns duplex-link $router2 $rcvr($i) 10Mb 10ms DropTail

    set angle [expr $angle+$offset]
    puts "$angle"
    $ns duplex-link-op $router2 $rcvr($i) orient [expr $angle]deg
    $ns duplex-link-op $sndr($i) $router1 orient [expr -1*$angle]deg
}

$ns duplex-link-op $router1 $router2 orient right

$ns 
close $
exec nam out.
exit 0