트랜지스터 변환 벡터의 좌표 계산(Calculate xyz coordinates of translation vectors from cif format)
변환 벡터(Translation Vectors:TV)의 길이와 각도가 알려진 단원 단원에 대해 격자점의 3차원 좌표(TV의 성분)를 계산하는 계산을 설명한다.크리스털 구조 데이터베이스에서 얻은 CIF 파일에 기재된 크리스털 구조를 xyz 등으로 변환할 때 참고하십시오.
결정 단위 격자
AO계 결정 결정체의 예를 표시합니다.
이런 단위 결정은 보통 $a축, $b축, $c$c축 3차원 벡터로 설명됩니다.
축의 각도는 $\alpha$축과 $a$축의 각도는 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$a축의 각도는 $\gamma달러입니다.
축의 길이와 각도를 알고 있으면 3D Cartesian 좌표계(직교 좌표계)로 변환할 수 있습니다.
카드시안으로 전환
크리스털을 변환한 후의 좌표는 유일하지 않다.
여기서 $a$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
결과만 나오면.\vec{a}=\left[\begin{array}{c}
|\vec{a}| \\
0 \\
0
\end{array}\right]
\vec{b}=\left[\begin{array}{c}
|\vec{b}| \cos \gamma \\
|\vec{b}| \sin \gamma \\
0
\end{array}\right]
\vec{c}=\left[\begin{array}{c}
|\vec{c}| \cos \beta \\
\dfrac{|\vec{c}|(\cos \alpha -\cos \beta \cos \gamma )}{\sin\gamma } \\
|\vec{c}|\sqrt{1-\cos^2 \beta-\left(\dfrac{\cos \alpha -\cos \beta \cos \gamma}{\sin\gamma }\right)^2}
\end{array}\right]
.축은 모두 원점을 시작점으로 합니다.
참고로 셀의 부피는 $V=|\vec{a}|||||\vec{b}|\vec{c}|\sqrt{sin^2\beta\sin^2\gamma-\left(\cos\alpha-\cos\beta\cos\gamma\right)^2}달러입니다V=\left|\vec{a}\cdot\vec{b}\times\vec{c}\right|$도 요청되었지만, 현재 TV\small \left[\begin{array}{ccc}
|\vec{a}| & 0 & 0 \\
|\vec{b}| \cos \gamma & |\vec{b}| \sin \gamma & 0 \\
|\vec{c}| \cos \beta & \dfrac{|\vec{c}|(\cos \alpha -\cos \beta \cos \gamma )}{\sin\gamma } & |\vec{c}|\sqrt{1-\cos^2 \beta-\left(\dfrac{\cos \alpha -\cos \beta \cos \gamma}{\sin\gamma }\right)^2}
\end{array}\right]
의 하삼각형 행렬이기 때문에 단원격의 부피는 대각분량의 적으로 표시할 수 있다.
변환 코드
python을 변환하는 스크립트를 보여 줍니다.목록의 수치를 적절하게 바꾸십시오.
또한python에서 삼각함수의 내용은 호도 단위로 해야 하기 때문에 $\pi/180달러를 곱해서 환산해야 한다.
cartesian.pyimport math
length = [6.18704, 2.91581, 7.28313] # a, b, c
degree_angle = [81.6066, 99.4557, 76.4221] # alpha, beta, gamma
angle = [i * math.pi/180.0 for i in degree_angle] # degree --> rad
a_axis = [0.0] * 3
b_axis = [0.0] * 3
c_axis = [0.0] * 3
a_axis[0] = length[0]
a_axis[1] = 0.00000
a_axis[2] = 0.00000
b_axis[0] = length[1]*math.cos(angle[2])
b_axis[1] = length[1]*math.sin(angle[2])
b_axis[2] = 0.00000
c_axis[0] = length[2]*math.cos(angle[1])
c_axis[1] = length[2]*(math.cos(angle[0])-math.cos(angle[1])*math.cos(angle[2]))/math.sin(angle[2])
c_axis[2] = length[2]*math.sqrt(1-(math.cos(angle[1])**2-(math.cos(angle[0])-math.cos(angle[1])*math.cos(angle[2]))/math.sin(angle[2]))**2)
print("TV",'{:>14.10f}'.format(a_axis[0]),'{:>14.10f}'.format(a_axis[1]),'{:>14.10f}'.format(a_axis[2]))
print("TV",'{:>14.10f}'.format(b_axis[0]),'{:>14.10f}'.format(b_axis[1]),'{:>14.10f}'.format(b_axis[2]))
print("TV",'{:>14.10f}'.format(c_axis[0]),'{:>14.10f}'.format(c_axis[1]),'{:>14.10f}'.format(c_axis[2]))
Reference
이 문제에 관하여(트랜지스터 변환 벡터의 좌표 계산(Calculate xyz coordinates of translation vectors from cif format)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/h-nabata/items/0b99e16b8e0ed4e32a82
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
크리스털을 변환한 후의 좌표는 유일하지 않다.
여기서 $a$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
결과만 나오면.
\vec{a}=\left[\begin{array}{c}
|\vec{a}| \\
0 \\
0
\end{array}\right]
\vec{b}=\left[\begin{array}{c}
|\vec{b}| \cos \gamma \\
|\vec{b}| \sin \gamma \\
0
\end{array}\right]
\vec{c}=\left[\begin{array}{c}
|\vec{c}| \cos \beta \\
\dfrac{|\vec{c}|(\cos \alpha -\cos \beta \cos \gamma )}{\sin\gamma } \\
|\vec{c}|\sqrt{1-\cos^2 \beta-\left(\dfrac{\cos \alpha -\cos \beta \cos \gamma}{\sin\gamma }\right)^2}
\end{array}\right]
.축은 모두 원점을 시작점으로 합니다.참고로 셀의 부피는 $V=|\vec{a}|||||\vec{b}|\vec{c}|\sqrt{sin^2\beta\sin^2\gamma-\left(\cos\alpha-\cos\beta\cos\gamma\right)^2}달러입니다V=\left|\vec{a}\cdot\vec{b}\times\vec{c}\right|$도 요청되었지만, 현재 TV
\small \left[\begin{array}{ccc}
|\vec{a}| & 0 & 0 \\
|\vec{b}| \cos \gamma & |\vec{b}| \sin \gamma & 0 \\
|\vec{c}| \cos \beta & \dfrac{|\vec{c}|(\cos \alpha -\cos \beta \cos \gamma )}{\sin\gamma } & |\vec{c}|\sqrt{1-\cos^2 \beta-\left(\dfrac{\cos \alpha -\cos \beta \cos \gamma}{\sin\gamma }\right)^2}
\end{array}\right]
의 하삼각형 행렬이기 때문에 단원격의 부피는 대각분량의 적으로 표시할 수 있다.변환 코드
python을 변환하는 스크립트를 보여 줍니다.목록의 수치를 적절하게 바꾸십시오.
또한python에서 삼각함수의 내용은 호도 단위로 해야 하기 때문에 $\pi/180달러를 곱해서 환산해야 한다.
cartesian.pyimport math
length = [6.18704, 2.91581, 7.28313] # a, b, c
degree_angle = [81.6066, 99.4557, 76.4221] # alpha, beta, gamma
angle = [i * math.pi/180.0 for i in degree_angle] # degree --> rad
a_axis = [0.0] * 3
b_axis = [0.0] * 3
c_axis = [0.0] * 3
a_axis[0] = length[0]
a_axis[1] = 0.00000
a_axis[2] = 0.00000
b_axis[0] = length[1]*math.cos(angle[2])
b_axis[1] = length[1]*math.sin(angle[2])
b_axis[2] = 0.00000
c_axis[0] = length[2]*math.cos(angle[1])
c_axis[1] = length[2]*(math.cos(angle[0])-math.cos(angle[1])*math.cos(angle[2]))/math.sin(angle[2])
c_axis[2] = length[2]*math.sqrt(1-(math.cos(angle[1])**2-(math.cos(angle[0])-math.cos(angle[1])*math.cos(angle[2]))/math.sin(angle[2]))**2)
print("TV",'{:>14.10f}'.format(a_axis[0]),'{:>14.10f}'.format(a_axis[1]),'{:>14.10f}'.format(a_axis[2]))
print("TV",'{:>14.10f}'.format(b_axis[0]),'{:>14.10f}'.format(b_axis[1]),'{:>14.10f}'.format(b_axis[2]))
print("TV",'{:>14.10f}'.format(c_axis[0]),'{:>14.10f}'.format(c_axis[1]),'{:>14.10f}'.format(c_axis[2]))
Reference
이 문제에 관하여(트랜지스터 변환 벡터의 좌표 계산(Calculate xyz coordinates of translation vectors from cif format)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/h-nabata/items/0b99e16b8e0ed4e32a82
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import math
length = [6.18704, 2.91581, 7.28313] # a, b, c
degree_angle = [81.6066, 99.4557, 76.4221] # alpha, beta, gamma
angle = [i * math.pi/180.0 for i in degree_angle] # degree --> rad
a_axis = [0.0] * 3
b_axis = [0.0] * 3
c_axis = [0.0] * 3
a_axis[0] = length[0]
a_axis[1] = 0.00000
a_axis[2] = 0.00000
b_axis[0] = length[1]*math.cos(angle[2])
b_axis[1] = length[1]*math.sin(angle[2])
b_axis[2] = 0.00000
c_axis[0] = length[2]*math.cos(angle[1])
c_axis[1] = length[2]*(math.cos(angle[0])-math.cos(angle[1])*math.cos(angle[2]))/math.sin(angle[2])
c_axis[2] = length[2]*math.sqrt(1-(math.cos(angle[1])**2-(math.cos(angle[0])-math.cos(angle[1])*math.cos(angle[2]))/math.sin(angle[2]))**2)
print("TV",'{:>14.10f}'.format(a_axis[0]),'{:>14.10f}'.format(a_axis[1]),'{:>14.10f}'.format(a_axis[2]))
print("TV",'{:>14.10f}'.format(b_axis[0]),'{:>14.10f}'.format(b_axis[1]),'{:>14.10f}'.format(b_axis[2]))
print("TV",'{:>14.10f}'.format(c_axis[0]),'{:>14.10f}'.format(c_axis[1]),'{:>14.10f}'.format(c_axis[2]))
Reference
이 문제에 관하여(트랜지스터 변환 벡터의 좌표 계산(Calculate xyz coordinates of translation vectors from cif format)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/h-nabata/items/0b99e16b8e0ed4e32a82텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)