jjbinaryvolume.cpp

来自「3D reconstruction, medical image process」· C++ 代码 · 共 147 行

CPP
147
字号
#include "stdafx.h"#include "JJBinaryVolume.h"JJBinaryVolume::JJBinaryVolume(){	m_pbyVolume = NULL;}JJBinaryVolume::~JJBinaryVolume(){	DestroyVolume();}BOOL JJBinaryVolume::CreateVolume(int iX, int iY, int iZ){	DestroyVolume();	ASSERT(m_pbyVolume == NULL);	ASSERT(iX > 0 && iY > 0 && iZ > 0);	m_iSizeX = iX; //9	m_iSizeY = iY; //9	m_iSizeZ = iZ; //9	m_iBitVolSizeX = iX / 8 + (((iX % 8) > 0) ? 1: 0); // 1 + 1 = 2	m_iBitVolSizeY = iY; // 9	m_iBitVolSizeZ = iZ; // 9	m_iSizeOfBitVolume = m_iBitVolSizeX*m_iBitVolSizeY*m_iBitVolSizeZ;	m_pbyVolume = (unsigned char*)malloc(m_iSizeOfBitVolume);		if(m_pbyVolume == NULL) {		m_iSizeOfBitVolume = 0;		return FALSE;	}		Clear();	return TRUE;}BOOL JJBinaryVolume::DestroyVolume(){	if(m_pbyVolume){		free(m_pbyVolume);		m_pbyVolume = NULL;	}	return TRUE;}BOOL JJBinaryVolume::Clear(){	ASSERT(m_pbyVolume != NULL);	memset(m_pbyVolume, 0x00, sizeof(unsigned char)*m_iSizeOfBitVolume);	return TRUE;}void JJBinaryVolume::SetEdge(int iX, int iY, int iZ){	switch (iX % 8)	{	case 0:		m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] |= 0x01;		break;	case 1:		m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] |= 0x02;		break;	case 2:		m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] |= 0x04;		break;	case 3:		m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] |= 0x08;		break;	case 4:		m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] |= 0x10;		break;	case 5:		m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] |= 0x20;		break;	case 6:		m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] |= 0x40;		break;	case 7:		m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] |= 0x80;		break;	}}BOOL JJBinaryVolume::IsEdge(int iX, int iY, int iZ){	switch (iX % 8)	{	case 0:		if (m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] & 0x01)			return TRUE;		else			return FALSE;		break;	case 1:		if (m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] & 0x02)			return TRUE;		else			return FALSE;		break;	case 2:		if (m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] & 0x04)			return TRUE;		else			return FALSE;		break;	case 3:		if (m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] & 0x08)			return TRUE;		else			return FALSE;		break;	case 4:		if (m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] & 0x10)			return TRUE;		else			return FALSE;		break;	case 5:		if (m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] & 0x20)			return TRUE;		else			return FALSE;		break;	case 6:		if (m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] & 0x40)			return TRUE;		else			return FALSE;		break;	case 7:		if (m_pbyVolume[iX/8 + iY*m_iBitVolSizeX + iZ*m_iBitVolSizeX*m_iBitVolSizeY] & 0x80)			return TRUE;		else			return FALSE;		break;	}	return FALSE;}

⌨️ 快捷键说明

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