📄 quatemion.cpp
字号:
#include "quatemion.h"
#include<math.h>
quatemion::quatemion(){}
quatemion::~quatemion(){}
quatemion::quatemion(double _q,double _x,double _y,double _z){
q=_q;
x=_x;
y=_y;
z=_z;
}
quatemion::quatemion(quatemion&q1){
q=q1.q;
x=q1.x;
y=q1.y;
z=q1.z;
}
void quatemion::show(std::ostream&o){
o<<'{'<<q<<"\t("<<x<<'\t'<<y<<'\t'<<z<<")}\n";
}
quatemion operator+(quatemion&q1,quatemion&q2){
quatemion qq;
qq.q=q1.q+q2.q;
qq.x=q1.x+q2.x;
qq.y=q1.y+q2.y;
qq.z=q1.z+q2.z;
return qq;
}
quatemion operator-(quatemion&q1,quatemion&q2){
quatemion qq;
qq.q=q1.q-q2.q;
qq.x=q1.x-q2.x;
qq.y=q1.y-q2.y;
qq.z=q1.z-q2.z;
return qq;
}
quatemion operator*(quatemion&q1,quatemion&q2){
quatemion qq;
qq.q=q1.q*q2.q-q1.x*q2.x-q1.y*q2.y-q1.z*q2.z;
qq.x=q1.q*q2.x-q1.x*q2.q-q1.y*q2.z-q1.z*q2.y;
qq.y=q1.q*q2.y-q1.y*q2.q-q1.z*q2.x-q1.x*q2.z;
qq.z=q1.q*q2.z-q1.z*q2.q-q1.x*q2.y-q1.y*q2.x;
return qq;
}
quatemion operator/(quatemion&q1,quatemion&q2){
quatemion qq(~q2),s,t;
register double a;
t=q1*qq;
s=qq*qq;
a=1.0/s.q;
qq.q*=a;
qq.x*=a;
qq.y*=a;
qq.z*=a;
return qq;
}
quatemion operator~(quatemion&q1){
quatemion qq;
qq.q=q1.q;
qq.x=-q1.x;
qq.y=-q1.y;
qq.z=-q1.z;
return qq;
}
quatemion quatemion::square(){
register double a;
quatemion qq;
a=2.0*q;
qq.q=q*q-x*x-y*y-z*z;
qq.x=a*x;
qq.y=a*y;
qq.z=a*z;
return qq;
}
quatemion quatemion::squateroot(){
quatemion qq;
double len,m;
double a,b;
len=sqrt(q*q+x*x+y*y+z*z);
m=1.0/sqrt(q*q+x*x);
a=sqrt((1.0+y)/2.0);
b=sqrt((1.0-y)/2.0);
qq.q=sqrt(len)*b*q*m;
qq.x=sqrt(len)*b*x*m;
qq.y=sqrt(len)*a;
qq.z=z;
return qq;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -