|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
未经本人允许,该绘制椭圆脚本拒绝任何转载
昨天刚要睡觉看到一个人提问的帖子,说是如何用GrADS绘制椭圆,觉得还挺有意思,因为GrADS里面貌似没有自带这方面的东西,draw mark出来的也只能是圆,还看到他的帖子里面附带了一个脚本,于是我就看了看。
那个帖子在这里:http://bbs.06climate.com/forum.php?mod=viewthread&tid=14278
帖子里的脚本写的有点凌乱,看不下去了,于是直接试试效果,画出来是这么个图:
额。。。既然是画图的脚本,就不应该跟经纬度联系,而应该用屏幕坐标,要不然如果是各种剖面图就没办法画了。而且这个图是不是有点。。。
于是,就决定自己写啦!在维基百科又复习了一遍高中数学关于椭圆的一些知识,感觉差不多了就动手写,下面就是我写的脚本画出来的东西:
这才是画图嘛,这样不管是什么坐标系,什么维度设置,都能够在想要的地方画图椭圆(别告诉我你没发现这图里面有椭圆。。。)
下载下面的drawEllipse脚本,放到GrADS安装目录的Contents/Scripts目录(有的版本是lib目录)
话说这图可不是ps的,感兴趣的可以自己下载脚本试试吧!下面是脚本的主要用法:
- drawEllipse -arg arg
- 其中,-arg表示要设置的参数,arg表示参数的内容
- 具体如下:
- -a 设置椭圆的半长轴,单位英寸,默认1
- -b 设置椭圆的半短轴,单位英寸,默认2
- -cx 设置椭圆的中心x坐标,页面坐标,默认5
- -cy 设置椭圆的中心y坐标,页面坐标,默认5
- -type 设置椭圆的绘制方式,-1表示填色,0表示不填色,1/2/3/4/5分别表示用1-5的对应的draw mark的符号来绘制,默认0
- -thick 表示绘制线条或者mark的粗细,默认1
- -col 表示用来绘制(填色)的颜色,默认为3
- -theta 表示将椭圆逆时针旋转多少度,单位是角度,如45,表示将椭圆逆时针旋转45度
- -accur 表示绘制的精细程度,默认为1,该数值越大,绘制耗时越长,建议为1
- 直接输入drawEllipse可以查看用法
下面这个脚本就是用来绘制上面那幅图的(第二幅):
- 'reinit'
- drawFlo(1,2,7,6,7,5)
- drawFlo(1,6,7,2,7,5)
- drawFlo(1,10,7,8,7,5)
- drawRot(1,1.5,2,3,1,45,1)
- drawRot(1,4.3,2,2,-1,45,0)
- drawRot(1,7,2,7,-1,45,0)
- drawRot(1,9.6,2,7,2,45,1)
- drawFlo(0.5,3.8,5.5,6,7,7)
- drawFlo(0.5,7.8,5.5,2,7,7)
- ;
- function drawRot(size,px,py,col,type,delta,round)
- a=1*size
- b=0.5*size
- tmp='-a '%a%' -b '%b%' -cx '%px%' -cy '%py%' -type '%type%' -col '%col
- i = 0
- while(i<=180)
- args=tmp%' -theta '%i
- 'drawEllipse.gs 'args''
- i=i+delta
- endwhile
- if(round=1)
- args='-a '%a%' -b '%a%' -cx '%px%' -cy '%py%' -type 0 -thick 3 -col '%col
- 'drawEllipse.gs 'args''
- endif
- return
- function drawFlo(size,px,py,col1,col2,col3)
- a=1*size
- b=0.65*size
- tmp='-a '%a%' -b '%b
- args=tmp%' -col '%col1%' -type -1 -theta 60'%' -cx '%px%' -cy '%py
- 'drawEllipse.gs 'args''
- args=tmp%' -col '%col2%' -type 0 -theta 60 -thick 2'%' -cx '%px%' -cy '%py
- 'drawEllipse.gs 'args''
- args=tmp%' -col '%col1%' -type -1 -theta 120'%' -cx '%(px-a)%' -cy '%py
- 'drawEllipse.gs 'args''
- args=tmp%' -col '%col2%' -type 0 -theta 120 -thick 2'%' -cx '%(px-a)%' -cy '%py
- 'drawEllipse.gs 'args''
- tmp='-a '%(a*0.66)%' -b '%(b*0.7)
- args=tmp%' -col '%col1%' -type -1 -theta 90 -thick 2'%' -cx '%(px-a*0.5)%' -cy '%(py-b*0.4)
- 'drawEllipse.gs 'args''
- xl=px-b-0.05*size
- yt=py-a+0.1*size
- xr=px-b+0.35*size
- yb=yt-2*size
- 'set line 'col3
- 'draw recf 'xl' 'yb' 'xr' 'yt
- return
绘制椭圆脚本下载(下载后请放到GrADS的脚本目录下):谢谢@银狐的提醒,文件名里多了一个空格,请自己去掉~
drawEllipse .gs
(3.06 KB, 下载次数: 125)
|
评分
-
查看全部评分
|