欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 编程资源 > 编程问答 >内容正文

编程问答

awk 求三角形重心 -凯发ag旗舰厅登录网址下载

发布时间:2025/1/21 编程问答 9 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 awk 求三角形重心 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

说明蓝色=命令名称

      浅绿=命令参数

      浅蓝=选项

      紫色=目录

      系统环境: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
想要实现的效果:把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

 

转载于:https://blog.51cto.com/linux521/819632

总结

以上是凯发ag旗舰厅登录网址下载为你收集整理的awk 求三角形重心的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图