⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quatemion.cpp

📁 本代码演示了平衡排序二叉树的实现
💻 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 + -