1#!/usr/bin/env bash
2#
3# Tests gmt project in Cartesian manipulations
4
5ps=cartesian.ps
6
7cat << EOF > pts.tt
81.7	1
9-1	1.5
10-1.5	-1.3
111.5	-0.5
12EOF
13cat << EOF >> axes.tt
14> x-axis
15-3	0
163	0
17> y-axis
180	-3
190	3
20EOF
21cx=0
22cy=0
23
24makeproj () {
25# Expects azimuth x y
26echo "$2 $3" | gmt project -N -C$cx/$cy -A$1 -Fpqrs
27}
28
29makeaxis () {
30# Expects azimuth file
31gmt project -N -C$cx/$cy -A-$1 -Fpq $2
32}
33
34gmt set PS_CHAR_ENCODING ISOLatin1+
35
36gmt pstext -R0/8.5/0/11 -Jx1i -F+jCB -P -Xa0 -Ya0 -K > $ps \
37<<< "4.25 10.25 [x,y] (black dot). 2nd pair is (p,q) and third is (r,s) [plotted as red dot]"
38ypos=1.25
39By=Sn
40for az in 30 135 200 290 ; do
41	xpos=0.75
42	az90=`gmt math -Q $az 90 ADD =`
43	Bx=We
44	while read x y; do
45		makeaxis $az axes.tt > tt.a
46		makeproj $az $x $y > tt.d
47		gmt psbasemap -R-2/2/-2/2 -JX1.5i -B2g1 -B${Bx}${By} -O -K -Xa$xpos -Ya$ypos >> $ps
48		echo "$cx $cy 0 $az" | gmt psxy -R -J -O -K -SW0.2i -W0.25p -Xa$xpos -Ya$ypos >> $ps
49		gmt psxy -R -J -O -K -W1p,red -Xa$xpos -Ya$ypos tt.a >> $ps
50		echo "$cx $cy $az 0.75" | gmt psxy -R -J -O -K -SV0.15i+e+a60 -W0.5p -Gred -Xa$xpos -Ya$ypos >> $ps
51		echo "$cx $cy $az90 0.75" | gmt psxy -R -J -O -K -SV0.15i+e+a60 -W0.5p -Gred -Xa$xpos -Ya$ypos >> $ps
52		gmt project -A$az90 -C$cx/$cy -N -G1 -L1.75/1.755 > tt.x
53		gmt project -A$az -C$cx/$cy -N -G1 -L1.75/1.755  > tt.y
54		(head -n 1 tt.x) | $AWK '{printf "%s %s P", $1, $2}' | gmt pstext -R -J -F+f7p+a$az -O -K -A -Xa$xpos -Ya$ypos >> $ps
55		(head -n 1 tt.y) | $AWK '{printf "%s %s Q", $1, $2}' | gmt pstext -R -J -F+f7p+a$az90 -O -K -A -Xa$xpos -Ya$ypos >> $ps
56		echo "$cx $cy 0 0.75" | gmt psxy -R -J -O -K -SV0.15i+e+a60 -W0.5p -Gblack -Xa$xpos -Ya$ypos >> $ps
57		echo "$cx $cy 90 0.75" | gmt psxy -R -J -O -K -SV0.15i+e+a60 -W0.5p -Gblack -Xa$xpos -Ya$ypos >> $ps
58		gmt pstext -R -J -O -K -F+f7p,white -Xa$xpos -Ya$ypos >> $ps <<< "1.75 0 x"
59		gmt pstext -R -J -O -K -F+f7p,white -Xa$xpos -Ya$ypos >> $ps <<< "0 1.8 y"
60		(echo "$x $y"; cut -f3,4 tt.d) | gmt psxy -R -J -O -K -W0.5p,- -Xa$xpos -Ya$ypos >> $ps
61		echo "$x $y" | gmt psxy -R -J -O -K -Xa$xpos -Ya$ypos -Sc0.075i -Gblack >> $ps
62		cut -f3,4 tt.d | gmt psxy -R -J -O -K -Xa$xpos -Ya$ypos -Sc0.075i -W0.5p,black -Gred >> $ps
63		printf "0 2 [%s,%s] (%.2f,%.2f) (%.2f,%.2f)\n" $x $y `cat tt.d` | \
64			gmt pstext -R -J -F+f8p+jCB -O -K -Xa$xpos -Ya$ypos -N -D0/0.2i >> $ps
65		gmt pstext -R -J -O -K -Xa$xpos -Ya$ypos -N -D-0.05i/0.05i -Gwhite -W -F+f8p+jBR >> $ps <<< "2 -2 @~a@~ = $az@."
66		xpos=`gmt math -Q $xpos 1.9 ADD =`
67		Bx=we
68	done < pts.tt
69	ypos=`gmt math -Q $ypos 2.25 ADD =`
70	By=sn
71done
72gmt psxy -R -J -O -T >> $ps
73
74