设为首页 加入收藏

TOP

awk 求三角形重心
2014-11-24 12:09:30 来源: 作者: 【 】 浏览:0
Tags:awk 三角形 重心

说明蓝色=命令名称


浅绿=命令参数


浅蓝=选项


紫色=目录



问题如下:


各位大侠,最近遇到一桩急事,解决不了,烦请能力者为我解忧。
问题:有A文件如下(三角形的三个点,共3个三角形):
x006 x386 x389
......
x386 x389 x400
......
x081 x397 x401
B文件如下(点的坐标,X,Y,Z):
290.2 142.8 120.3537 x006
289.1 141.6 121.2275 x386
......
291.3 141.0 120.7663 x389
288.9 138.9 121.6213 x400
275.8 139.1 121.2721 x081
275.5 139.3 121.3628 x397
275.4 138.9 122.0949 x401
想要实现的效果:把A文件中的三角形的三个点带入B文件中,让B文件中符合点名要求的第一列相加并除以3,第二列相加并除以3,得到A文件中三角形的重心位置,比如第一个三角形:x006,x386,x389,其重心位置为:290.2 141.8,如何用AWK实现呢?
急!


文件如下图:



方法awk '{if(NR==FNR){a[$4,1]=$1;a[$4,2]=$2}else{print $0" : "(a[$1,1]+a[$2,1]+a[$3,1])/3,(a[$1,2]+a[$2,2]+a[$3,2])/3}}' b a



网友方法awk 'NR==FNR{x[$NF]=$1;y[$NF]=$2;next};{for(i=0;i<=NF;++i){ xx+=x[$i];yy+=y[$i];};print xx/3, yy/3;}' b a



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Python os模块的Examples 下一篇单片机中C语言延时函数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·PostgreSQL 索引 - (2025-12-25 22:20:43)
·MySQL Node.js 连接 (2025-12-25 22:20:41)
·SQL 撤销索引、表以 (2025-12-25 22:20:38)
·Linux系统简介 (2025-12-25 21:55:25)
·Linux安装MySQL过程 (2025-12-25 21:55:22)