我正在尝试使用角度定位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以使用角度以特定方式定向。无论我为角度设置什么值,方向都不会改变。
答案 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