最近需要处理大量数据,需要对化学键键角批量输出。

我已经把原子坐标以xyz的形式给出。

现在搞不定如何把夹角以degree(度数)的方式给求出来。

哪位知道怎么弄?

本人很菜,别笑话。

#It is 4 Bond Angles

for XYZ in `ls *.xyz`

do

#read in the atom Nr.

AN1=`echo $[$1+2]`

AN2=`echo $[$2+2]`

AN3=`echo $[$3+2]`

echo $AN1 $AN2 $AN3

#The first atom

A11=`awk "NR==$AN1" $XYZ |awk '{print $1}'`

A1x=`awk "NR==$AN1" $XYZ |awk '{print $2}'`

A1y=`awk "NR==$AN1" $XYZ |awk '{print $3}'`

A1z=`awk "NR==$AN1" $XYZ |awk '{print $4}'`

#The second atom

A21=`awk "NR==$AN2" $XYZ |awk '{print $1}'`

A2x=`awk "NR==$AN2" $XYZ |awk '{print $2}'`

A2y=`awk "NR==$AN2" $XYZ |awk '{print $3}'`

A2z=`awk "NR==$AN2" $XYZ |awk '{print $4}'`

#

A31=`awk "NR==$AN3" $XYZ |awk '{print $1}'`

A3x=`awk "NR==$AN3" $XYZ |awk '{print $2}'`

A3y=`awk "NR==$AN3" $XYZ |awk '{print $3}'`

A3z=`awk "NR==$AN3" $XYZ |awk '{print $4}'`

#

echo -e "$A11\t$A1x\t$A1y\t$A1z\t"

echo -e "$A21\t$A2x\t$A2y\t$A2z\t"

echo -e "$A31\t$A3x\t$A3y\t$A3z\t"

#

TT=`echo -e "$A11\t$A1x\t$A1y\t$A1z\t$A21\t$A2x\t$A2y\t$A2z\t$A31\t$A3x\t$A3y\t$A3z\t" `

echo $TT

#

A1A2=`echo $TT | awk '{print $6-$2,$7-$3,$8-$4}' `

echo A1A2 $A1A2

A1A2X=`echo $TT | awk '{print $6-$2}' `

A1A2Y=`echo $TT | awk '{print $7-$3}' `

A1A2Z=`echo $TT | awk '{print $8-$4}' `

A2A3=`echo $TT | awk '{print $10-$6,$11-$7,$12-$8}' `

echo A2A3 $A2A3

A2A3X=`echo $TT | awk '{print $10-$6}' `

A2A3Y=`echo $TT | awk '{print $11-$7}' `

A2A3Z=`echo $TT | awk '{print $12-$8}' `

A1A2A2A3=`echo $A1A2  $A2A3 `

echo A1A2A2A3 $A1A2A2A3

#乘积A1A2*A2A3=(x2-x1)*(x3-x2)+(y2-y1)*(y3-y2)+(z2-z1)*(z3-z2)

TA1A2A2A3=`echo $A1A2A2A3 | awk '{print $1*$4+$2*$5+$3*$6}'`

echo TA1A2A2A3 $TA1A2A2A3

#

A1A2A1A2=`echo $A1A2 | awk '{print $1^2+$2^2+$3^2}'`

A2A3A2A3=`echo $A2A3 | awk '{print $1^2+$2^2+$3^2}'`

echo A1A2A1A2 $A1A2A1A2

echo A2A3A2A3 $A2A3A2A3

#|P1P2|=根号[(x2-x1)2+(y2-y1)2+(z2-z1)2] |P2P3|=根号[(x3-x2)2+(y3-y2)2+(z3-z2)2]

#var absA1A2A2A3=A1A2*A2A3

absA1A2=`echo $A1A2A1A2 | awk '{print sqrt($1)}'`

echo absA1A2 $absA1A2

absA2A3=`echo $A2A3A2A3 | awk '{print sqrt($1)}'`

echo absA2A3 $absA2A3

#

#cos(A1A2,A2A3)=A1A2*A2A3/(|A1A2|*|A2A3|)

A1A2A3=`echo $TA1A2A2A3 $absA1A2 $absA2A3 `

echo A1A2A3 $A1A2A3

# 前面检查,读入和输出,应该是正确的,但下面这部分搞不定了

cosA1A2A3=`echo $A1A2A3 | awk '{print $1/($2*$3)}'`

#弧度=角度乘以π后再除以180 角度=弧度除以π再乘以180

#pi=3.1415926535898

cosA1A2A3=`echo $cosA1A2A3 | awk '{print cos($1)}'`

Angle=`echo $acosA1A2A3 | awk '{print $1*180/3.1415926535898}' `

echo $A1A2 $A1A2XX $A1A2YY $A1A2ZZ $A1A2A1A2 $cosA1A2A3

echo $cosA1A2A3

echo $Angle

done

xyz 文件如下:

36

Fe  4.84655858507584      0.56633277215833      0.34035878855785

Al  4.79235130609276      2.90413572930704      0.18293815072370

H   4.28535603237677      3.97006317825069      1.30657195333100

O   1.96706095735722      1.03530980080275      0.77397530855226

O   4.93691132336707     -2.35361098202682      0.67632768640727

O   6.77764534437593      1.25909183704602      2.45505687074638

O   5.76193037993391      0.63511115108140     -2.45907090865639

N   2.60533354124266      4.09822722851467     -1.75829932419780

....

lisp 计算三点的夹角_已知三点坐标求夹角 - 程序语言 - 小木虫 - 学术 科研 互动社区...相关推荐

  1. 用matlab做一个有刻度的网格,已知45个点X Y Z的坐标值已知,如何用matlab画出网格图,另外每个小方格里带颜色 - 程序语言 - 小木虫 - 学术 科研 互动社区...

    相邻点连成线 x1=[94.386041 97.620596 100.690028 103.691318 106.642137 94.418517 97.663183 100.748096 103.7 ...

  2. 孙鑫java高清完整版(课件+视频)_孙鑫Java高清完整版(课件+视频) - 程序语言 - 小木虫 - 学术 科研 互动社区...

    本套光盘由孙鑫老师亲自授课录制.内容涵盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟,学员通过本套光盘的学习,能够快速掌握Java编程语言,成为Java高手. 1.循序渐进 从自学者很难弄明白的 ...

  3. matlab nml,fortran module 中如何进行赋值计算 - 程序语言 - 小木虫 - 学术 科研 互动社区...

    Fortran代码如下: <pre> module module_name real(8) :: a,b,c contains subroutine initial_ab namelist ...

  4. vasp 模拟退火_【转】vasp的分子动力学模拟 - 第一原理 - 小木虫 - 学术 科研 互动社区...

    vasp做分子动力学的好处,由于vasp是近些年开发的比较成熟的软件,在做电子scf速度方面有较好的优势. 缺点:可选系综太少. 尽管如此,对于大多数有关分子动力学的任务还是可以胜任的. 主要使用的系 ...

  5. 计算机视听觉机理和方法,重大研究计划“视听觉信息的认知计算” - 基金申请 - 小木虫 - 学术 科研 互动社区...

    重大研究计划"视听觉信息的认知计算" 2008年度项目指南 与人类视听觉感知密切相关的图像.语音和文本(语言)信息在社会.经济和国家安全等领域中扮演着重要角色,并在今后一段时间内仍 ...

  6. matlab拟合参数最优,使用matlab最优化方法拟合获得多个动力学参数中的问题 - 计算模拟 - 小木虫 - 学术 科研 互动社区...

    各位师兄师姐,麻烦大家帮我看一下这个问题.我现在想用一个模型来描述我的实验现象,模型如图所示. 我通过实验有了x-t的实验数据,如下图所示,我现在想用matlab的fmincon函数求解模型中的ks和 ...

  7. vasp计算压电系数_求助DFTP算出来的压电系数 - 第一原理 - 小木虫 - 学术 科研 互动社区...

    我用的VASP5.2 下的LEPSILON-tag算的压电系数和BEC等东西,之前发过类似的贴,不过这次想一起贴上来在好好求助一下: 我的INCAR SYSTEM=PLPK ENCUT=400 PRE ...

  8. matlab求x对应y值,matlab已知f(x,y)=0,已知一组x如何求对应的y值? - 计算模拟 - 小木虫 - 学术 科研 互动社区...

    不知道你是怎么画的,ezplot中x的范围取得太大了吧,,.我画出来的图是一致的啊. 不知道怎么不能上传图片了,你自己运行下吧 clc; clear all;  close all; x=[0, 0. ...

  9. 复分析导论第一卷pdf微盘_【分享】【分享】《复分析导论(第2卷):多复变函数》【已搜索无重复】 - 数学 - 小木虫 - 学术 科研 互动社区...

    中文名: 复分析导论(第2卷):多复变函数 作者: 沙巴特译者: 许明; 欧阳彦虹图书分类: 教育/科技 资源格式: DJVU 版本: 第4版 出版社: 高等教育出版社书号: 978704022360 ...

最新文章

  1. 端子排怎么生成_防雷接地图纸怎么看?
  2. Opengl-阴影(分为定向光的和点光源的)
  3. Apache2配置SSL
  4. 时序分析:手势--空间轨迹模式识别
  5. 饿了么超级会员,年卡低至108元!饿了么会员,点外卖超省钱!
  6. [bbk4343]小布-OCP 042全真试题讲解
  7. 信安精品课:第7章访问控制技术原理与应用精讲笔记
  8. 20165231 2017-2018-2 《Java程序设计》第8周学习总结
  9. iPhone 12 Pro/Pro Max最新渲染图曝光
  10. C++ cin 详解之终极无惑
  11. 文件浏览器一定要有个向上级按钮
  12. 山东理工ACM【1216】杨辉三角
  13. c语言if如何判断键盘输入是整数,利用if,else判断输入的是不是一个正整数
  14. cba篮球暂停次数和时间_篮球比赛一节有几次暂停?
  15. 从狼群智能到无人机群协同决策
  16. 那些你不知道的RK3288人脸识别方案
  17. 知识点(1):OSI网络模型
  18. 物联网学习之旅:微信小程序控制STM32(三)--STM32代码编写
  19. 计算机部分应用显示模糊,电脑显示器局部模糊怎么办
  20. c语言黑白棋程序设计报告,C语言课程设计报告--黑白棋.doc

热门文章

  1. 用于文档上下文感知推荐的卷积矩阵分解
  2. 一文读懂什么是C++移动语义《一》
  3. go语言中变量的定义和使用
  4. wireshrk中的名词说明
  5. 高级C语言教程-编译链接调试
  6. 如何提升网站在移动端的打开速度(转)
  7. jmeter结果分析
  8. head.s 分析——Linux-0.11 学习笔记(三)
  9. 【☀️C语言函数传参の结构体数组篇☀️】
  10. 操作系统(十四)进程调度的时机、调度方式