Skip to content
Snippets Groups Projects
cart-sys3d.h 2.53 KiB
Newer Older
  • Learn to ignore specific revisions
  • Debolskiy Andrey's avatar
    Debolskiy Andrey committed
    #pragma once
    
    // [cart-sys3d.h]: 3D cartesian axis type
    //
    // -------------------------------------------------------------------------------------------- //
    
    #include <string.h>
    
    namespace nse
    {
    	namespace nse_const3d {
    		enum axisType {
    			axisX = 0, axisY = 1, axisZ = 2,
    			axisXY = 3, axisXZ = 4, axisYZ = 5, axisXYZ = 6
    		};
    	}
    
    	const char* axis_name(const nse_const3d::axisType axis);
    
    	bool axis_value(nse_const3d::axisType *axis, const char* name);
    
    	bool is_axis_1d(const nse_const3d::axisType axis);
    	bool is_axis_2d(const nse_const3d::axisType axis);
    	bool is_axis_3d(const nse_const3d::axisType axis);
    
    	namespace nse_const3d {
    		enum domainSideType {
    			westSide = 0, eastSide = 1,
    			southSide = 2, northSide = 3,
    			bottomSide = 4, topSide = 5
    		};
    	}
    }
    
    // Implementation:
    // -------------------------------------------------------------------------------------------- //
    inline const char* nse::axis_name(const nse_const3d::axisType axis) {
    	if (axis == nse_const3d::axisX) return "X";
    	if (axis == nse_const3d::axisY) return "Y";
    	if (axis == nse_const3d::axisZ) return "Z";
    	if (axis == nse_const3d::axisXY) return "XY";
    	if (axis == nse_const3d::axisXZ) return "XZ";
    	if (axis == nse_const3d::axisYZ) return "YZ";
    	if (axis == nse_const3d::axisXYZ) return "XYZ";
    	return "UNDEF";
    }
    
    inline bool nse::axis_value(nse_const3d::axisType *axis, const char* name) 
    {
    	if (!strcmp(name, axis_name(nse_const3d::axisX))) {
    		(*axis) = nse_const3d::axisX;
    		return true;
    	}
    	if (!strcmp(name, axis_name(nse_const3d::axisY))) {
    		(*axis) = nse_const3d::axisY;
    		return true;
    	}
    	if (!strcmp(name, axis_name(nse_const3d::axisZ))) {
    		(*axis) = nse_const3d::axisZ;
    		return true;
    	}
    	if (!strcmp(name, axis_name(nse_const3d::axisXY))) {
    		(*axis) = nse_const3d::axisXY;
    		return true;
    	}
    	if (!strcmp(name, axis_name(nse_const3d::axisXZ))) {
    		(*axis) = nse_const3d::axisXZ;
    		return true;
    	}
    	if (!strcmp(name, axis_name(nse_const3d::axisYZ))) {
    		(*axis) = nse_const3d::axisYZ;
    		return true;
    	}
    	if (!strcmp(name, axis_name(nse_const3d::axisXYZ))) {
    		(*axis) = nse_const3d::axisXYZ;
    		return true;
    	}
    
    	return false;
    }
    
    inline bool nse::is_axis_1d(const nse_const3d::axisType axis)
    {
    	return ((axis == nse_const3d::axisX) ||
    		(axis == nse_const3d::axisY) || (axis == nse_const3d::axisZ));
    }
    
    inline bool nse::is_axis_2d(const nse_const3d::axisType axis)
    {
    	return ((axis == nse_const3d::axisXY) ||
    		(axis == nse_const3d::axisXZ) || (axis == nse_const3d::axisYZ));
    }
    
    inline bool nse::is_axis_3d(const nse_const3d::axisType axis)
    {
    	return (axis == nse_const3d::axisXYZ);
    }