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

📄 vect4d.cpp

📁 3D reconstruction, medical image processing from colons, using intel image processing for based clas
💻 CPP
字号:
// Vect4D.cpp : implementation of the CSegRender class//#include "stdafx.h"#include <math.h>#include "Vect4D.h"RxVect4D::RxVect4D(){	for(int i=0; i<3 ; i++)		m[i] = 0;	m[3] =1;}RxVect4D::RxVect4D(const RxVect4D& vect){	for(int i=0; i<4 ; i++)		m[i] = vect.m[i];}RxVect4D::RxVect4D(double m0,double m1,double m2,double m3){	m[0]=m0; m[1]=m1; m[2]=m2; m[3]=m3;}RxVect4D::RxVect4D(double m0,double m1,double m2){	m[0]=m0; m[1]=m1; m[2]=m2; m[3]=1.;}RxVect4D::RxVect4D(double vec[4]){	m[0]=vec[0]; m[1]=vec[1]; m[2]=vec[2]; m[3]=vec[3];}RxVect4D::RxVect4D(CPoint pt){	m[0]=pt.x; m[1]=pt.y; m[2]=0; m[3]=1;}RxVect4D::~RxVect4D(void){}RxVect4D RxVect4D::operator=(const RxVect4D& vect){	for(int i=0; i<4 ; i++)		m[i] = vect.m[i];	return (*this);}RxVect4D RxVect4D::operator+(const RxVect4D vect){	RxVect4D resV;	for(int i=0; i< 3; i++)		resV.m[i] = m[i]+vect.m[i];		return resV;}RxVect4D RxVect4D::operator-(const RxVect4D vect){	RxVect4D resV;	for(int i=0; i< 3; i++)		resV.m[i] = m[i]-vect.m[i];		return resV;}/*RxVect4D RxVect4D::operator+(const RxPoint3D<float> pt3D){	RxVect4D resV;	resV.m[0] = m[0]+pt3D.x;	resV.m[1] = m[1]+pt3D.y;	resV.m[2] = m[2]+pt3D.z;		return resV;}*///vector郴利double RxVect4D::operator*(const RxVect4D vect){	double res=0;	for(int i=0; i< 3; i++)		res += m[i]*vect.m[i];		return res;}RxVect4D RxVect4D::operator*(const double var){	RxVect4D resV;	for(int i=0; i<3; i++)		resV.m[i] = m[i]*var;		return resV;}RxVect4D RxVect4D::Min(const RxVect4D& vect){	RxVect4D resV;	for(int i=0; i<4; i++)		resV.m[i] = __min(m[i], vect.m[i]);	return resV;}RxVect4D RxVect4D::Max(const RxVect4D& vect){	RxVect4D resV;	for(int i=0; i<4; i++)		resV.m[i] = __max(m[i], vect.m[i]);	return resV;}/*RxVect4D RxVect4D::operator*(const RxMatrix4D mat){	RxVect4D resV(0,0,0,0);	for(int i=0; i< 4; i++)		for(int j=0; j< 4; j++) 			resV.m[i] += m[j]*mat.m[j][i];		return resV;}*/double RxVect4D::operator[](const int inx) const{	return m[inx];}BOOL RxVect4D::operator==(const RxVect4D &r) const{	if (m[0]==r[0]&&m[1]==r[1]&&m[2]==r[2]) return TRUE;	else return FALSE;}BOOL RxVect4D::operator!=(const RxVect4D &r) const{	return !(*this==r);}void RxVect4D::Normalize(void){	double norm = sqrt(m[0]*m[0] + m[1]*m[1] + m[2]*m[2]);	for(int i=0 ; i<3 ; i++)		m[i] /= norm;}// sungeui startdouble RxVect4D::DotProduct (const RxVect4D vect){	return m[0]*vect.m[0] + m[1]*vect.m[1] + m[2]*vect.m[2];}RxVect4D RxVect4D::CrossProduct (const RxVect4D vect){	RxVect4D resV;	resV.m[0] = m[1]*vect.m[2] - m[2]*vect.m[1];	resV.m[1] = m[2]*vect.m[0] - m[0]*vect.m[2];	resV.m[2] = m[0]*vect.m[1] - m[1]*vect.m[0];	return resV;}RxVect4D RxVect4D::operator/(const double var){	RxVect4D resV;	for(int i=0; i<3; i++)		resV.m[i] = m[i]/var;		return resV;}double RxVect4D::Magnitude (void){	double Value;	Value = m[0] * m[0] + m[1] * m[1] + m[2] * m[2];	return sqrt(Value);}void RxVect4D::Inverse(){	m[0] = -m[0];	m[1] = -m[1];	m[2] = -m[2];}// 0 : X_AXIS, 1 : Y_AXIS, 2 : Z_AXISint RxVect4D::GetPrincipalAxis(){	if (fabs(m[0]) >= fabs(m[1])) {		if (fabs(m[0]) >= fabs(m[2]))			return 0;		else			return 2;	}	else {		if (fabs(m[1]) >= fabs(m[2]))			return 1;		else			return 2;	}}int RxVect4D::GetLeastPrincipalAxis(){	if (fabs(m[0]) < fabs(m[1])) {		if (fabs(m[0]) < fabs(m[2]))			return 0;		else			return 2;	}	else {		if (fabs(m[1]) < fabs(m[2]))			return 1;		else			return 2;	}}int RxVect4D::GetPrincipalAxisWithSign(){	// 1 : X_AXIS, 2 : Y_AXIS, 3 : Z_AXIS	if (fabs(m[0]) >= fabs(m[1])-0.1e-3) {		if (fabs(m[0]) >= fabs(m[2])-0.1e-3) {			if (m[0] >=0)				return 1;			else				return -1;		}		else {			if (m[2] >= 0)				return 3;			else				return -3;		}	}	else {		if (fabs(m[1]) >= fabs(m[2])-0.1e-3) {			if (m[1] >= 0)				return 2;			else				return -2;		}		else {			if (m[2] >= 0)				return 3;			else				return -3;		}	}}int RxVect4D::GetSecondaryAxisWithSign(int iPrincipal){	// 1 : X_AXIS, 2 : Y_AXIS, 3 : Z_AXIS	if (iPrincipal < 0) iPrincipal = -iPrincipal;	if (iPrincipal==1) {		if (fabs(m[1]) >= fabs(m[2])-0.1e-3) {			if (m[1] >= 0)				return 2;			else				return -2;		}		else {			if (m[2] >= 0)				return 3;			else				return -3;		}	}	else if (iPrincipal==2) {		if (fabs(m[0]) >= fabs(m[2])-0.1e-3) {			if (m[0] >= 0)				return 1;			else				return -1;		}		else {			if (m[2] >= 0)				return 3;			else				return -3;		}	}	else {		if (fabs(m[0]) >= fabs(m[1])-0.1e-3) {			if (m[0] >= 0)				return 1;			else				return -1;		}		else {			if (m[1] >= 0)				return 2;			else				return -2;		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -