登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
缘起那天看到坛友的问题,一时兴起,写了个演示的脚本:
其实,surfer 本身有一个堆叠地图的例子,叫 StackedMaps.srf。 用脚本实现的好处是,可以避免许多重复的鼠标操作,尤其遇到需要反复制作同类图形的时候。 问题但是当时画的参考线条没有普适性,只要改变任何参数,这4条连接拐角的参考线就错位了。 画这 4 条拐角的连接线起码涉及到旋转角度、倾斜角度,可惜在帮助文件里面翻了半天也没有看到换算公式,里面提到的参考书我也没有。 求解于是自己在纸上乱画,胡乱蒙了两个公式: 1、旋转: xt = x0+(x-x0)*cos(rotation)-(y-y0)*sin(rotation)
​
yt = y0+(x-x0)*sin(rotation)+(y-y0)*cos(rotation)
​其中 (xt, yt) - 旋转之后的坐标 (x0, y0) - 旋转中心坐标 (x, y) - 要旋转的坐标 rotation - 旋转角度 2、倾斜: yt = y0 + (y-y0)*sin(tilt)其中 yt - 倾斜之后的 y 坐标 y0 - 旋转中心的 y 坐标 y - 要倾斜的 y 坐标 tilt - 倾斜角度 得道将就能用,可是 surfer 并没有告诉我们 map(包含坐标轴、地图等图层) 外框和里面的 overlays(具体的等值线图、线框图等图层) 拐角之间的关系,而我们的参考连接线是连接 overlays 拐角的。 当然要计算也不是不可以,把 map 外框减去 axes 的标注、刻度等占用的空间,剩下就是 overlays 的空间了。 可是感觉好烦,要考虑太多参数,标注要考虑字体、字号、标注位置等,刻度也要考虑方向、长度等参数。 想了一个取巧的方案: 1、先把要 stack 的地图都生成,把所有坐标轴全部取消刻度、标注,那么 map 的拐角就是 overlays 的拐角啦; 2、把各地图移动到合适的位置进行堆叠; 3、画连接拐角的参考线; 4、再设置各个 map 的坐标轴属性。
换了几个文件,换了几个参数试验,还可以。 |