📄 jjbinaryvolume.cpp
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -