awk 求三角形重心
說明:藍色=命令名稱
??????淺綠=命令參數(shù)
??????淺藍=選項
????? 紫色=目錄
????? 系統(tǒng)環(huán)境:CentOS??5.7? x86_64
問題如下:
各位大俠,最近遇到一樁急事,解決不了,煩請能力者為我解憂。
問題:有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
想要實現(xiàn)的效果:把A文件中的三角形的三個點帶入B文件中,讓B文件中符合點名要求的第一列相加并除以3,第二列相加并除以3,得到A文件中三角形的重心位置,比如第一個三角形:x006,x386,x389,其重心位置為:290.2 141.8,如何用AWK實現(xiàn)呢?
急!
?
文件如下圖:
方法: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
網(wǎng)友方法: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
?
轉載于:https://blog.51cto.com/linux521/819632
總結
以上是生活随笔為你收集整理的awk 求三角形重心的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一些设计上的基本常识(转载)
- 下一篇: 2012年初的10个绝对让你惊喜的jQu