| 查看: 2097 | 回复: 4 | |||
tcclab银虫 (正式写手)
|
[交流]
已知三点坐标求夹角 已有2人参与
|
|
最近需要处理大量数据,需要对化学键键角批量输出。 我已经把原子坐标以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 .... |
» 猜你喜欢
职称评审没过,求安慰
已经有55人回复
最近几年招的学生写论文不引自己组发的文章
已经有5人回复
26申博自荐
已经有3人回复
A期刊撤稿
已经有4人回复
» 本主题相关价值贴推荐,对您同样有帮助:
已知x,y,z坐标及测量数值,求怎样作图让测量数值用颜色显示?
已经有6人回复
fullprof精修:知道a,b,c和三个角度,但是不知道原子坐标及所属空间群怎么办
已经有18人回复
已知圆柱面上若干点的坐标,怎样近似知道主轴的方向或方程?
已经有15人回复
jade6,坐标轴没有角度显示
已经有10人回复
求助已知三维坐标位置,如何画出空间图像
已经有5人回复
如何得到已知坐标点的坡度、坡向
已经有6人回复
已知x y坐标点 求一元二次回归方程
已经有3人回复
已知面心立方的晶面夹角,怎么确定是哪两个晶面?
已经有7人回复
已知大量点集的坐标,如何画出其3D图像?
已经有6人回复
jerkwin
专家顾问 (正式写手)
-

专家经验: +14 - 应助: 454 (硕士)
- 金币: 20699.1
- 散金: 148
- 红花: 81
- 帖子: 813
- 在线: 2648.3小时
- 虫号: 1023452
- 注册: 2010-05-19
- 专业: 理论和计算化学
- 管辖: 分子模拟
2楼2014-01-29 23:34:33
3楼2014-01-30 03:48:48
tcclab
银虫 (正式写手)
- 应助: 18 (小学生)
- 金币: 3172.5
- 散金: 202
- 红花: 2
- 帖子: 318
- 在线: 301.8小时
- 虫号: 509063
- 注册: 2008-02-22
- 专业: 理论和计算化学
4楼2014-01-30 17:08:46
tcclab
银虫 (正式写手)
- 应助: 18 (小学生)
- 金币: 3172.5
- 散金: 202
- 红花: 2
- 帖子: 318
- 在线: 301.8小时
- 虫号: 509063
- 注册: 2008-02-22
- 专业: 理论和计算化学
5楼2014-01-30 17:09:11













回复此楼