首页 > 其他分享 >awk一行代码将平面在极折赤平投影上

awk一行代码将平面在极折赤平投影上

时间:2022-09-23 10:55:19浏览次数:54  
标签:awk 平面 极折 赤平 向量 gmt

awk一行代码在极折赤平投影上画平面

最近用gmt6在极折赤平投影上投点和线的时候遇到了一些问题,于是把脚本贴上来。
输入的三列数据为平面的法向量坐标

gmt begin test png
gmt basemap -JX2c/2c -R-10/10/-10/10 -Baf 
awk 'BEGIN{
    pid=0.017453
    for (az=0; az<=360; az++) {
    print 10*cos(az*pid),10*sin(az*pid) }
}' | gmt clip -W1.0p,black 
echo 0 1 1 | awk '{
    xn=$1;          yn=$2;          zn=$3;
    x0=0;           y0=0;           z0=1;
    xp=yn*z0-y0*zn; yp=x0*zn-xn*z0; zp=xn*y0-x0*yn;
    xq=yn*zp-yp*zn; yq=xp*zn-xn*zp; zq=xn*yp-xp*yn;
    print ">"
    for (i=0; i<360; i+=5) {
        xl=xp*cos(i*0.017453)+xq*sin(i*0.017453)
        yl=yp*cos(i*0.017453)+yq*sin(i*0.017453)
        zl=zp*cos(i*0.017453)+zq*sin(i*0.017453)
        azi=atan2(xl,yl)
        if (zl<0) azi=3.1416+azi
        thi=atan2(sqrt(zl*zl),sqrt(xl*xl+yl*yl))
        x=10*cos(thi)*sin(azi)
        y=10*cos(thi)*cos(azi)
        if (zl>0) print x,y
    }
}' | gmt plot -W0.3p,red
gmt clip -C
gmt end

原理是平面的法向量n(xn,yn,zn)先和001向量叉乘得到一个该平面的一个基向量p(xp,yp,zp),然后该基向量p再和法向量n叉乘得到该平面的另一个基向量q(xq,yq,zq),然后以pq两个基向量为基底画圆即可。
效果如下图

标签:awk,平面,极折,赤平,向量,gmt
From: https://www.cnblogs.com/liangxuran/p/16721929.html

相关文章

  • awk的简要使用
    原文地址:https://www.lujun9972.win/blog/2020/08/23/在命令行进行简单的统计分析/index.html目录使用awk获取最小值、最大值、中位数和平均值使用datamash进行......
  • linux三剑客sed、grep、awk
    linux中最重要的三个命令称为三剑客,分别是sed、grep、awk但是在学习这三个命令之前,首先需要了解一下正则表达式1.正则表达式 元字符功能含义^匹配行首表示......
  • 第十一章 awk命令
    一、awk简介1)awk介绍awk命名源自于它的三大作者名字的首字母,分别是AlfredAho、BrianKernighan、PeterWeinberger。(gawk是awk的GNU版本,它提供了Bell实验室和GNU的一些......
  • linux awk数组操作详细介绍
    linuxawk数组操作详细介绍-程默-博客园 https://www.cnblogs.com/chengmo/archive/2010/10/08/1846190.html用awk进行文本处理,少不了就是它的数组处理。那么awk数......
  • linux awk命令详解
    linuxawk命令详解-ggjucheng-博客园 https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html简介awk是一个强大的文本分析工具,相对于grep的查找,sed......
  • linux AWK
    $cat1.txt./smp_ao_stafpotl_info.log.2020-07-23-AM:2020-07-2309:36:22,655898582491[WebContainer:1]ERRORcom.group.bussvc.stafpotl.service.AppListTypeS......
  • Linux之awk注意点
    1.awkBEGIN不能用于读取文本信息的输出print[root@ecs-76840553home]#echo"hello"|awk'{print$0}'hello[root@ecs-76840553home]#echo"hello"|awk'BEG......
  • awk5个使用场景
    awk简介首先要知道awk的使用场景,需了解awk有哪些优势与短板。关于个人近期学习awk总结其优势:awk对文本的处理运算效率同比其他工具效率高很多(比shell的for循环高10倍......
  • linux中awk的小案例使用
    1.排版整齐的输出第一列与最后一列awk'{printf"%-15s%s\n",$1,$NF}'data2.txt   2.对于数据的每个字段之间进行控制使用print函数打印,如果......
  • linux中awk
    一:说明1.说明Linux系统中还有一个功能更加强大的文本数据处理工具,就是awkawk的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进......