2015-10-06 77 views
0

我想使用角度來定位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設置爲使用角度以特定方式定向。無論我爲角度賦予什麼樣的價值,方向都不會改變。

回答

0

最後回答我的問題,

NS2的文檔/ NAM是不恰當,不正確地告訴如何在屬性以定向鏈接中使用的角度。

this頁所示,它只是說這個

的可能是以下中的一個:東方色彩,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"

但在現實中,你需要定向通過附加詞度的角度值

例如:$ns duplex-link-op orient 90應該是$ns duplex-link-op orient 90deg

所以c Ode將如下:

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