#pragma once #include "dt.h" #include #include "CManageDB.h" #ifdef CMATRIX_EXPORTS #define CMATRIX_DLL_API __declspec(dllexport) #else #define CMATRIX_DLL_API //__declspec(dllimport) #endif using namespace ns_db; namespace ns_mat { #define MAT_COMM_PI 3.1415926 #define NONE_POINT_INDEX 0 #define FIRST_POINT_INDEX 1 enum MATRIX_SEARCH_DIR { DIR_S = 0X0,/*弓字型*/ DIR_Z = 0X1,/*之字型*/ }; enum PICK_DIE_STATUS { DIE_EXIST,/*原来的*/ PICK_ING,/*正在取*/ NO_EXIST,/*已取走*/ EDGE_DIE, SKIP_DIE, //NO_EXIST,/*跳过的点*/ }; class CMATRIX_DLL_API CMatrixCommon { public: //计算两点的角度 static double TwoPointCalculateAngle(XY_DOUBLE_STRUCT p, XY_DOUBLE_STRUCT ori); //计算某点旋转一定角度后的位置 static void CalRotationPoint(XY_DOUBLE_STRUCT prePoint, double angle, XY_DOUBLE_STRUCT& pointResult); static bool IsNoBondPoint(vector vecNoBondPt, UINT iRow, UINT iCol); static XY_DOUBLE_STRUCT CalculatePosition(PROGRAM_DIE_MATRIX_STRUCT stMatrix, UINT iRow, UINT iCol); static XY_DOUBLE_STRUCT CalculatePosition(PROGRAM_WAFFLE_MATRIX_STRUCT stMatrix, UINT iRow, UINT iCol); static XY_DOUBLE_STRUCT CalculatePosition(PROGRAM_HEAD_TABLE_MATRIX_STRUCT stMatrix, UINT iRow, UINT iCol); static XY_DOUBLE_STRUCT CalculatePosition(PROGRAM_POINT_MATRIX_STRUCT stMatrix, UINT iRow, UINT iCol); static XY_DOUBLE_STRUCT CalculatePosition(PROGRAM_BOND_MATRIX_STRUCT stMatrix, UINT iRow, UINT iCol); static XY_DOUBLE_STRUCT CalculatePosition(OneDimMatrixInfo stMatrix, int iRow, int iCol); }; }