[Thread Prev][Thread Next][Index]

Re: Draw an arrow




|____spillane@pmel.noaa.gov____|
|__Room 2070 Bldg#3 NOAA/PMEL__|
|____Phone_:_(206)526-6780_____|

On Thu, 19 Dec 2002, Adil Sozer wrote:
> Is it possible to draw an arrow without using the mouse in ferret
> by giving the start and end points and the direction.

Dear Adil,
There are several ways to add arrows to a plot as can be found by
searching the ferret mail archives
http://ferret.wrc.noaa.gov/Ferret/Mail_Archives/ferret_mail_archives.html

Here is a way (that may duplicate something already out there)
The syntax is
	go arrow_user 14 3 4 5 6
or
	go arrow_nouser 19 0 0 8 6
depending on whether the coordinates are in USER or NOUSER units. In the
first example a thick red line (pen 14) is drawn from (3,4) to (5,6).
In the second example a WHITE line (pen 19) is drawn from the lowerleft
(0",0") to the upperright (8",6") assuming standard axes of 8" by 6".

The .jnl files are listed below.  Hope they help.
Mick

!----------------------------------------------------------------
! arrow_user : draws arrow with selected pen given start and end
!              points in user unit coordinates.  the arrows barb
!              here is defined as 10% of shaft length at a
!              constant angle of 30 but these could be modified
!
! usage example:
!            shade/i=1:8/j=1:6 i+j
!            go arrow_user 19 3 2 6 5
!       draws a white arrow (pen 14) with tail at (3,2) and head
!       at (6,5) where the coordinates are in USER UNITS
!            let x1=i ; let y1=i ; let x2=1.5*i ; let y2=2*i
!            repeat/i=1:3 (go arrow_user 14 `x1` `y1` `x2` `y2`)
!       adds a family of three thick red arrows
!
ppl pen,1,$1
ppl aline,1,$2,$3,$4,$5
let shaftlen=(($2-$4)^2+($3-$5)^2)^0.5 ! shaft length
let shaftdir=atan2($3-$5,$2-$4)        ! head to tail direction

! barb definition - customize as desired
let barbang=30*atan(1.)/45             ! 30 degrees converted to radians
let barblen=0.1*shaftlen               ! barb length set to 10% of shaft

let barbx1=$4+barblen*cos(shaftdir+barbang) ! right barb tooking toward tip
let barby1=$5+barblen*sin(shaftdir+barbang)
let barbx2=$4+barblen*cos(shaftdir-barbang) ! left barb tooking toward tip
let barby2=$5+barblen*sin(shaftdir-barbang)

ppl aline,1,$4,$5,`barbx1`,`barby1`
ppl aline,1,$4,$5,`barbx2`,`barby2`

!-------------------------------------------------------------
! arrow_nouser : draws arrow with selected pen given start and end
!                points in NONUSER coordinates.  the arrows barb
!                here is defined as 10% of shaft length at a
!                constant angle of 30 but these could be modified
!
! usage examples:
!            shade/i=1:8/j=1:6 i+j
!            go arrow_nouser 19 0 0 8 6
!       draws a single white arrow (pen 19) with tail at (0,0) and head
!       at (8,6) where coordinates are NONUSER (inches by default)
!            let x1=i ; let y1=i ; let x2=1.5*i ; let y2=2*i
!            repeat/i=1:3 (go arrow_nouser 14 `x1` `y1` `x2` `y2`)
!       adds a family of three thick red arrows
!
ppl pen,1,$1
ppl aline/nouser,1,$2,$3,$4,$5
let shaftlen=(($2-$4)^2+($3-$5)^2)^0.5 ! shaft length
let shaftdir=atan2($3-$5,$2-$4)        ! head to tail direction

! barb definition - customize as desired
let barbang=30*atan(1.)/45             ! 30 degrees converted to radians
let barblen=0.1*shaftlen               ! barb length set to 10% of shaft

let barbx1=$4+barblen*cos(shaftdir+barbang) ! right barb tooking toward tip
let barby1=$5+barblen*sin(shaftdir+barbang)
let barbx2=$4+barblen*cos(shaftdir-barbang) ! left barb tooking toward tip
let barby2=$5+barblen*sin(shaftdir-barbang)

ppl aline/nouser,1,$4,$5,`barbx1`,`barby1`
ppl aline/nouser,1,$4,$5,`barbx2`,`barby2`



[Thread Prev][Thread Next][Index]

Dept of Commerce / NOAA / OAR / PMEL / TMAP

Contact Us | Privacy Policy | Disclaimer | Accessibility Statement