#ifndef __MICORDISTPRO_H__
#define __MICORDISTPRO_H__

#include "SYdef.h"

typedef struct Point10dF
{
	float ORGX;
	float ORGY;
	float PX_X;
	float PX_Y;
	float PY_X;
	float PY_Y;
	float CWX;   //设备正方向旋转时产生的像素点
	float CWY;
	float CCWX;  //设备负方向旋转时产生的像素点
	float CCWY;
}Point10dF;

typedef struct Point5dVec
{
	double V1;
	double V2;
	double V3;
	double V4;
	double V5;
}Point5dVec;

typedef struct TransferParam
{
	double	V1;
	double	V2;
	double	V3;
	double	V4;
	double	V5;
	double	V6;
}TransferParam;

typedef struct AlignData
{
	float xmm;          //mm
	float ymm;	    	//mm
	float angle;		//deg

	double org_width;        //
	double org_heigth;       //

	double samp_width;
	double samp_height;

	bool b_Success; //对位是否成功
}AlignData;

typedef struct PULSE
{
	//XYR
	float X;
	float Y;
	float R;

	//XXY & XXYY &XYY
	float X1;
	float X2;
	float Y1;
	float Y2;

	float X1mm;
	float X2mm;
	float Y1mm;
	float Y2mm;
}PULSE;

typedef struct AxisInfo
{
	float DriveRatio;
	float DriveRadius;
	float Pitch;
	float PPR;
}AxisInfo;

typedef struct PRECISION
{
	float	m_xyPrecision;		//actual align xy precision (um)
	float   m_anglePrecision;   //actual align angle precision (deg)
}PRECISION;

typedef struct CamInfo
{
	int		c_width;     //Image width  
	int		c_height;	 //Image height  
	float	f_width;	 //FOV width   (mm)
	float	f_height;	 //FOV height	(mm)
	float	xp;			 //um/pixel in Camera X axis  (mm/pixel)
	float	yp;          //un/pixel in Camera Y axis  (mm/pixel)
}CamInfo;

enum Stage { XYR, XXY, XYY, XXYY, XXYY_LLR };

struct CalibrationLines
{
	//ORG
	LineData OrgLine;
	//X+
	LineData XPLine;
	//Y+
	LineData YPLine;
	//R+
	LineData RPLine;
	//R-
	LineData RMLine;
};

struct LineCalibration
{
	double V[18];
};

#define MICRODIST_API __declspec(dllexport)

#ifdef __cplusplus
extern "C" {
#endif
	//Get the MicroDist information
	MICRODIST_API char*			   SY_MD_GetVersion();

	//Diagonal Compensation 
	MICRODIST_API Point2dF		   SY_MD_Diagonal_XY(float a, float b, float Dx, float Dy);

	//像素坐标点转换函数，估算P点经物理量（XY或R）运动后的坐标
	//CPM:		该通道的标定信息
	//P:		移动前的坐标点
	//Xmm、Ymm: 平移物理量
	//Rdeg:     旋转物理量【*说明*】（如旋转了+2度错开后得到P，那么所求的是P点回旋-2度后的点，那么Rdeg填入 -2）
	//Mode:     转换模式 0--XY转换   1--R转换
	//b_CW:     物理旋转方向与像素坐标系的关系
	MICRODIST_API Point2dD		   SY_MD_RTCP(Point5dVec CPM, Point2dF P, float Xmm, float Ymm, float Rdeg, int Mode, bool b_CW);

	//Free calibration
	MICRODIST_API Point5dVec	   SY_MD_Free_Calibrate(float m_XYdist, float m_Angle, Point10dF MPoint, bool b_CW, bool b_Y);

	//Free Align (return the offset-struct) (All platforms are equivalent to the XYR platform)
	//XYFlag: 0--AB中点  1--A点  2--B点（XY对齐方式）
	//大坐标系里做补偿
	MICRODIST_API AlignData		   SY_MD_Free_Align(
													Point5dVec CPMA, Point5dVec CPMB, 
													Point2dF ORGA, Point2dF ORGB, 
													Point2dF SAMPA, Point2dF SAMPB, 
													float Xoffset, float Yoffset, float Roffset,
													bool b_CW, bool b_Y, unsigned int XYFlag
													);

	//Free Align 2
	//XYFlag: 0--AB中点  1--A点  2--B点（XY对齐方式）
	//补偿各视野独立坐标系
	MICRODIST_API AlignData		   SY_MD_Free_Align2(
													 Point5dVec CPMA, Point5dVec CPMB,
													 Point2dF ORGA, Point2dF ORGB,
													 Point2dF SAMPA, Point2dF SAMPB,
													 Point2dF CompensateA, Point2dF CompenSateB,
													 bool b_CW, bool b_Y, unsigned int XYFlag
													);

	//Information of the camera
	MICRODIST_API CamInfo		   SY_MD_Camera_Info(int ImgWidth, int ImgHeight, Point5dVec CPM);

	//Cameras inline study
	MICRODIST_API Point2dF		   SY_MD_TransferBtoA(Point2dF B, TransferParam TP, bool CXdirRev, bool CYdirRev);
	MICRODIST_API Point2dF		   SY_MD_TransferAtoB(Point2dF A, TransferParam TP, bool CXdirRev, bool CYdirRev);
	MICRODIST_API TransferParam	   SY_MD_StudyAtoB(Point2dF A[2], Point2dF B[2], bool CXdirRev, bool CYdirRev);

	//同一视野内两点距离计算
	MICRODIST_API double		   SY_MD_Nominal_Dist(Point5dVec CPM, Point2dF PointA, Point2dF PointB);

	//两视野内点连线距离计算
	MICRODIST_API double           SY_MD_Nominal_Dist2(
														Point5dVec CPMA, Point5dVec CPMB, 
														Point2dF PointA, Point2dF PointB,
														bool b_Y
														);	
	//Transfer Physic to pulse
	MICRODIST_API PULSE  		   SY_MD_Physic_To_Pulse(
														Stage Table, 
														AxisInfo XDir_Axis, AxisInfo YDir_Axis, AxisInfo RDir_Axis,
														float Xmm, float Ymm, float Degree
														);

	//控制UVW平台函数，包括XXY、XYY
	//轴信息的对应关系依照 UVW--XXY   UVW--YYX 填写，UPos、VPos、WPos规则相同
	//Degree: 平台将要旋转的度数
	//Degreed:平台已经旋转的度数
	MICRODIST_API PULSE			   SY_MD_UVW_Table_Control(Stage Table, AxisInfo UAxis, AxisInfo VAxis, AxisInfo WAxis,
														Point2dF UPos, Point2dF VPos, Point2dF WPos,
														float xmm, float ymm, float Degree, float Degreed);
	
	MICRODIST_API PULSE			   SY_MD_XXYY_Table_Control( 
														AxisInfo X1Axis, AxisInfo X2Axis, AxisInfo Y1Axis, AxisInfo Y2Axis,
														Point2dF X1Pos, Point2dF X2Pos, Point2dF Y1Pos, Point2dF Y2Pos,
														float xmm, float ymm, float Degree, float Degreed);

	//Three Camera Align
	//AngleFlag: [0]AB、BC同时约束  [1]AB约束  [2]BC约束  
	//XYFlag: [0]X由水平边输出，Y由垂直边输出 [1]A点对齐 [2]B点对齐 [3]C点对齐 [4]XY由水平线法线与垂直线法线交点决定
	MICRODIST_API AlignData		   SY_MD_Free_Align3C_New(
														Point5dVec CPMA, Point5dVec CPMB, Point5dVec CPMC,
														Point2dF ORGA, Point2dF ORGB, Point2dF ORGC,
														Point2dF SAMPA, Point2dF SAMPB, Point2dF SAMPC,
														float Xoffset, float Yoffset, float Roffset,
														bool b_CW, bool b_Y, int AngleFlag, int XYFlag
														);

	MICRODIST_API AlignData		   SY_MD_Free_Align3C_Old(
														Point5dVec CPMA, Point5dVec CPMB, Point5dVec CPMC,
														Point2dF ORGA, Point2dF ORGB, Point2dF ORGC,
														Point2dF SAMPA, Point2dF SAMPB, Point2dF SAMPC,
														float Xoffset, float Yoffset, float Roffset,
														bool b_CW, bool b_Y, int AngleFlag, int XYFlag
													);

	//Four Camera Align
	//AFlag: 0--对角线角度 1--水平线角度 2--垂直线角度 3--AB边角度  4--DC边角度  5--AD边角度  6--BC边角度  7--AB、AD、BC边角度
	//		 8--由XYFlag模式9、10控制取对应边角度（即以A或B点不相关的两条边进行补偿和偏差角度输出）
			
	//XYFlag: 0--4通道中心 1--A坐标 2--B坐标 3--C坐标 4--D坐标 5--AB连线 6--DC连线 7--AD连线 8--BC连线
	//		  9--A通道看主控点  10--B通道看主控点 11--X为AD对齐 Y为4平均 12--X为4平均 Y为AB对齐

	//TF: 控制补偿是否根据外部的角度控制（AngleX、AngleY） 
	//ratio: XYFlag模式9、10时，主控点贡献XY的比例
	MICRODIST_API AlignData		   SY_MD_Free_Align4C(
														Point5dVec CPMA, Point5dVec CPMB, Point5dVec CPMC, Point5dVec CPMD,
														Point2dF ORGA, Point2dF ORGB, Point2dF ORGC, Point2dF ORGD,
														Point2dF SAMPA, Point2dF SAMPB, Point2dF SAMPC, Point2dF SAMPD,
														float Xoffset, float Yoffset, float Roffset,
														bool b_CW, bool b_Y,
														int AFlag, int XYFlag,
														float AngleX, float AngleY,
														bool TF, float ratio
													 );

	//对角对位函数1【直角边交点】
	MICRODIST_API AlignData		   SY_MD_Free_Diagonal_Align1(
															Point5dVec CPMAT, Point5dVec CPMBT, 
															Point2dF ORGA, Point2dF ORGB, 
															Point2dF SAMPA, Point2dF SAMPB, 
															LineData OrgLineA[2], LineData OrgLineB[2],
															LineData SampLineA[2], LineData SampLineB[2],
															float Xoffset, float Yoffset, float Angleoffset,
															bool b_CW, bool b_Y															
															);

	//对角对位函数2【产品长宽尺寸】
	//xxx-Width：代表是左右的长度
	//xxx-Height：代表是上下的长度
	MICRODIST_API AlignData        SY_MD_Free_Diagonal_Align2(
															Point5dVec CPMAT, Point5dVec CPMBT, 
															Point2dF ORGA, Point2dF ORGB, 
															Point2dF SAMPA, Point2dF SAMPB, 
															float OrgWidth, float OrgHeight,
															float SampWidth, float SampHeight,
															float Xoffset, float Yoffset, float Angleoffset,
															bool b_CW, bool b_Y	
															 );

	//对角对位函数3【产品长宽尺寸】【Org与Sampe各自的标定信息】
	MICRODIST_API AlignData        SY_MD_Free_Diagonal_Align3(
															Point5dVec OrgACPM, Point5dVec OrgBCPM,
															Point5dVec SampACPM, Point5dVec SampBCPM,
															Point2dF ORGA, Point2dF ORGB,
															Point2dF SAMPA, Point2dF SAMPB,
															float OrgLength, float OrgWidth,
															float SampLength, float SampWidth,
															float Xoffset, float Yoffset, float Angleoffset,
															bool b_CW, bool b_Y
														);

	//单点+角度差对位
	//【注意】角度量都转换成水平方向角度
	//OrgAngle:   基准角度
	//DeltaAngle: (OrgAngle - SampAngle)  Org与Samp的角度差
	MICRODIST_API AlignData        SY_MD_SignalPoint_Align(
															Point5dVec CPM, 
															Point2dF org, Point2dF samp, 
															float OrgAngle,float DeltaAngle, 
															bool b_CW, bool b_Y,
															float Xoffset, float Yoffset, float Roffset);

	//OrgAngle\DeltaAngle 均为在像素坐标系内求得的角度量
	//DeltaAngle、AlignData的角度符号无需在外部处理
	MICRODIST_API AlignData        SY_MD_SignalPoint_Align2(
															Point5dVec CPM,
															Point2dF org, Point2dF samp,
															float OrgAngle, float DeltaAngle,
															bool b_CW, bool b_Y,
															float Xoffset, float Yoffset, float Roffset);

	//4相机边标定与对位函数【类型1】
	//      0
	//   3          1           
	//           2
	MICRODIST_API LineCalibration	SY_MD_LineCalibration4_1(Point2dF ImageSize[4],CalibrationLines Line[4] ,float XYDist, float RAngle);
	MICRODIST_API AlignData			SY_MD_LineAlign4_1(Point2dF ImageSize[4], LineCalibration LC, LineData OrgLine[4], LineData SampLine[4],
													 float ComX, float ComY1, float ComY2);

	//4相机边标定与对位函数【类型2】
	//      0    1
	//   3          2           
	//           
	MICRODIST_API LineCalibration	SY_MD_LineCalibration4_2(Point2dF ImageSize[4], CalibrationLines Line[4], float XYDist, float RAngle);
	MICRODIST_API AlignData			SY_MD_LineAlign4_2(Point2dF ImageSize[4], LineCalibration *LC, LineData OrgLine[4], LineData SampLine[4],
													 float ComX, float ComY1, float ComY2);

	//5相机边标定与对位函数【类型1】
	//    Y1  Y2
	//     0   1
	//  4        2    X
	//       3
	MICRODIST_API LineCalibration	SY_MD_LineCalibration5_1(Point2dF ImageSize[5],CalibrationLines Line[5] ,float XYDist, float RAngle, float &L01);
	MICRODIST_API AlignData			SY_MD_LineAlign5_1(Point2dF ImageSize[5], LineCalibration LC, LineData OrgLine[5], LineData SampLine[5],
													 float ComX, float ComY1, float ComY2, double LD[5]);
	
	//5相机边标定与对位函数【类型2】
	//        Y
	//        2
	// X1  1
	//           3
	// X2  0
	//        4
	MICRODIST_API LineCalibration	SY_MD_LineCalibration5_2(Point2dF ImageSize[5],CalibrationLines Line[5] ,float XYDist, float RAngle, float &L01);
	MICRODIST_API AlignData			SY_MD_LineAlign5_2(Point2dF ImageSize[5], LineCalibration LC, LineData OrgLine[5], LineData SampLine[5],
													float ComX1, float ComX2, float ComY, double LD[5]);


	//6相机边标定与对位函数【类型1】
	//    Y1  Y2
	//    0   1
	//  5        2   X
	//    4   3
	//flag:  0: 01  1:34  2: 01&34
	//LD[6]: Org与Samp直线距离（带符号）
	//XYFlag: 0:居中均分  1:左上角点 2:右上角点 3:右下角点 4:左下角点
	MICRODIST_API LineCalibration	SY_MD_LineCalibration6_2(Point2dF ImageSize[6],CalibrationLines Line[6] ,float XYDist, float RAngle, float &L01, float &L34);
	MICRODIST_API AlignData			SY_MD_LineAlign6_2(Point2dF ImageSize[6], LineCalibration LC, LineData OrgLine[6], LineData SampLine[6],
													 float ComX, float ComY1, float ComY2, unsigned int flag, double LD[6], int XYFlag);

	//【2023年4月6日10:23:08】测试全弧形产品
	MICRODIST_API LineCalibration	SY_MD_LineCalibration6_2_Test(Point2dF pts[6][5], float XYDist, float RAngle, float &L01, float &L34);
	MICRODIST_API AlignData			SY_MD_LineAlign6_2_Test(LineCalibration LC, Point2dF Orgs[6], Point2dF Samps[6],
													 float ComX, float ComY1, float ComY2, unsigned int flag, double LD[6]);


	//6相机边标定与对位函数【类型2】
	//    
	//      2
	//    1   3   
	//    0   4
	//      5
	//flag:  0: 01  1:34  2: 01&34
	MICRODIST_API LineCalibration  SY_MD_LineCalibration6_1(Point2dF ImageSize[6], CalibrationLines Line[6], float XYDist, float RAngle, float &L01, float &L34);
	MICRODIST_API AlignData		   SY_MD_LineAlign6_1(Point2dF ImageSize[6], LineCalibration LC, LineData OrgLine[6], LineData SampLine[6],
													  float ComX1, float ComX2, float ComY, unsigned int flag, double LD[6], int XYFlag);

	//2相机的抓边
	MICRODIST_API LineCalibration   SY_MD_LineCalibration2_HY(Point2dF ImageSize[2], CalibrationLines Line[2], float XYDist, float RAngle);
	MICRODIST_API AlignData			SY_MD_LineAlign2_HY(Point2dF ImageSize[2], LineCalibration LC, LineData OrgLine[2], LineData SampLine[2]);

	MICRODIST_API LineCalibration   SY_MD_LineCalibration2_VX(Point2dF ImageSize[2], CalibrationLines Line[2], float XYDist, float RAngle);
	MICRODIST_API AlignData			SY_MD_LineAlign2_VX(Point2dF ImageSize[2], LineCalibration LC, LineData OrgLine[2], LineData SampLine[2]);

	//2相机的抓边，需要标定信息。2相机各看一直线，非共线
	//直线同时为平行线，或同时为垂直线
	MICRODIST_API AlignData			SY_MD_LineAlign2_1C1L(int ImageWidth, int ImageHeight,
														  Point5dVec CPMA, Point5dVec CPMB, 
														  LineData OrgLineA, LineData OrgLineB, 
		                                                  LineData SampLineA, LineData SampLineB,
														  float Xoffset, float Yoffset, float Roffset, 
														  bool b_CW, bool b_Y);
	
	//将像素坐标转换到运动平台坐标
	MICRODIST_API Point2dD          SY_MD_Pixel_To_World(Point2dF pixel, Point5dVec CPM, bool b_Y);

	//像素点镜像函数
	MICRODIST_API Point2dF          SY_MD_Point_MirrorX(int ImgWidht, int ImgHeight, Point2dF p);
	MICRODIST_API Point2dF          SY_MD_Point_MirrorY(int ImgWidht, int ImgHeight, Point2dF p);

	//以下为特殊对位应用函数[均不需要作相机映射]
	//<1>CamStatus: 表示Org和Samp相机的轴方向关系，两相机要保证同轴
	//0：XY同方向  1：X同向Y异向  2：X异向Y同向  3：XY异方向


	MICRODIST_API AlignData			SY_MD_Special_Align2_1(int CamStatus,
														Point5dVec paramA, Point5dVec paramB,
														Point2dF OrgStdA, Point2dF OrgStdB,
														Point2dF SampStdA, Point2dF SampStdB,
														Point2dF OrgA, Point2dF OrgB,
														Point2dF SampA, Point2dF SampB,
														float mpp_OrgA, float mpp_OrgB,
														Point2dF CompensateA, Point2dF CompensateB,
														unsigned int XYFlag);


	//【4】对角对位应用，需要标定参数
	MICRODIST_API AlignData         SY_MD_Special_Align4(int CamStatus,
														 Point5dVec paramA, Point5dVec paramB,
														 Point2dF OrgStdA, Point2dF OrgStdB, 
														 LineData OrgStdAngleA[2],LineData OrgStdAngleB[2],
														 Point2dF SampStdA, Point2dF SampStdB, 
														 LineData SampStaAngleA[2], LineData SampStdAngleB[2],
														 Point2dF OrgA, Point2dF OrgB, 
														 LineData OrgAngleA[2], LineData OrgAngleB[2],
														 Point2dF SampA, Point2dF SampB, 
														 LineData SampAngleA[2], LineData SampAngleB[2],
														 float mpp_OrgA, float mpp_OrgB,
														 float deltaX, float deltaY, float deltaA);




	//【13】对角对位应用，需要标定参数
	MICRODIST_API AlignData         SY_MD_Special_Align13(int CamStatus,
														Point5dVec paramA, Point5dVec paramB,
														Point2dF OrgStdA, Point2dF OrgStdB, 
														Point2dF SampStdA, Point2dF SampStdB, 
														Point2dF OrgA, Point2dF OrgB, 
														Point2dF SampA, Point2dF SampB, 
														float OrgWidth, float OrgHeight, 
														float SampWidth, float SampHeight,
														float mpp_OrgA, float mpp_OrgB,
														float deltaX, float deltaY, float deltaA);

	//【14】对角对位应用，需要标定参数
	MICRODIST_API AlignData         SY_MD_Special_Align14(int CamStatus,
														Point5dVec OrgparamA, Point5dVec OrgparamB,
														Point5dVec SampParamA, Point5dVec SampParamB,
														Point2dF OrgStdA, Point2dF OrgStdB,
														Point2dF SampStdA, Point2dF SampStdB,
														Point2dF OrgA, Point2dF OrgB,
														Point2dF SampA, Point2dF SampB,
														float OrgWidth, float OrgHeight,
														float SampWidth, float SampHeight,
														float deltaX, float deltaY, float deltaA);
	
	//【不映射的2对2贴合函数】
	//CamStatus：0--平移贴合  2--翻板贴合
	//paramA、paramB：Samp的标定信息
	//OrgStd：Org的基准点
	//Org：新放入的目标点
	//LOrgStdAB：Org两个基准点的物理距离
	//mmpA、mmpB：观察Org的两个相机的像素分辨率
	//OrgAXYOffset、OrgBXYOffset：实际贴装位置与Org的位置偏移（以相机坐标系为参照，单位毫米）
	//SampStd：Samp的基准点
	//Samp：新放入的对象点
	//deltaX、deltaY、deltaA：补偿偏移
	//XYFlag：0--以AB中点对齐  1--以A点对齐  2--以B点对齐
	MICRODIST_API AlignData         SY_MD_NoMap_Align_2To2(int CamStatus,
														Point5dVec paramA, Point5dVec paramB,
														Point2dF OrgStdA, Point2dF OrgStdB,
														Point2dF OrgA, Point2dF OrgB,
														float LOrgStdAB, float mmpA, float mmpB,
														Point2dF OrgAXYOffset, Point2dF OrgBXYOffset,
														Point2dF SampStdA, Point2dF SampStdB,
														Point2dF SampA, Point2dF SampB,
														float deltaX, float deltaY, float deltaA,
														unsigned int XYFlag);

	//Org端使用标定板统一坐标系
	//paramA、paramB：Samp端的标定信息
	//WorldOrgStdA、WorldOrgStdB：A和B通道的Org基准世界坐标（经宫格标定生成）
	//WorldOrgA、WorldOrgB：A和B通道的Org世界坐标（经宫格标定生成）
	//OrgAXYOffset、OrgBXYOffset：贴合位置偏移
	MICRODIST_API AlignData         SY_MD_NoMap_Align_2To2_ORG_In_World(int CamStatus,
														Point5dVec paramA, Point5dVec paramB,
														Point2dF WorldOrgStdA, Point2dF WorldOrgStdB,
														Point2dF WorldOrgA, Point2dF WorldOrgB,
														Point2dF OrgAXYOffset, Point2dF OrgBXYOffset,
														Point2dF SampStdA, Point2dF SampStdB,
														Point2dF SampA, Point2dF SampB,
														float deltaX, float deltaY, float deltaA,
														unsigned int XYFlag);

	//Org端为门形拍照形式的不映射贴合
	//Org拍照位置顺序如下，并且由标定板转换为物理坐标。物理坐标系编辑为X右为正，Y下为正
	//   B      C
	//   A      D

	//Samp通道关系
	//   A      B   

	//OrgAXYOffset、 OrgBXYOffset：贴合偏移位置
	//deltaX、deltaY、deltaA：补偿偏移
	//XYFlag：0--以AB中点对齐  1--以A点对齐  2--以B点对齐

	//ComSHA、ComSHB：Samp端额外Y方向上的平移量(单位 毫米)
	MICRODIST_API AlignData			SY_MD_NoMap_Align_4LPTo2P_ORG_In_World(int CamStatus,
														Point5dVec paramA, Point5dVec paramB,
														Point2dF WorldOrgStdA, Point2dF WorldOrgStdB, Point2dF WorldOrgStdC, Point2dF WorldOrgStdD,
														Point2dF WorldOrgA, Point2dF WorldOrgB, Point2dF WorldOrgC, Point2dF WorldOrgD,
														Point2dF OrgAXYOffset, Point2dF OrgBXYOffset,
														Point2dF SampStdA, Point2dF SampStdB,
														Point2dF SampA, Point2dF SampB,
														float deltaX, float deltaY, float deltaA,
														unsigned int XYFlag,
														float ComSHA, float ComSHB);



	//不映射的3对3贴合函数
	//AngleFlag: [0]AB、BC同时约束  [1]AB约束  [2]BC约束 [3]视野内补偿
	//XYFlag: [0]X由水平边输出，Y由垂直边输出 [1]A点对齐 [2]B点对齐 [3]C点对齐
	MICRODIST_API AlignData         SY_MD_NoMap_Align_3To3(int CamStatus,
														Point5dVec paramA, Point5dVec paramB, Point5dVec paramC,
														Point2dF OrgStdA, Point2dF OrgStdB, Point2dF OrgStdC,
														float LOrgStdAB, float LOrgStdBC,
														Point2dF SampStdA, Point2dF SampStdB, Point2dF SampStdC,
														Point2dF OrgA, Point2dF OrgB, Point2dF OrgC,
														Point2dF SampA, Point2dF SampB, Point2dF SampC,
														float mpp_OrgA, float mpp_OrgB, float mpp_OrgC,
														float deltaX, float deltaY, float deltaA,
														int AngleFlag, int XYFlag);


	//不映射的4对2，其中2为Org，4为Samp
	//parmaN: SampN的标定信息
	//OrgStdN: Org的基准点
	//OrgN:    新放入的目标点
	//LOrgStdAB：Org两个基准点的物理距离
	//mmpA、mmpB：观察Org的两个相机的像素分辨率
	//SampStdN：Samp的基准点
	//Samp：新放入的对象点
	//deltaX、deltaY、deltaA：补偿偏移
	MICRODIST_API AlignData		   SY_MD_NoMap_Align_4To2(int CamStatus,
														Point5dVec paramA, Point5dVec paramB, Point5dVec paramC, Point5dVec paramD,
														Point2dF OrgStdA, Point2dF OrgStdB,
														Point2dF OrgA, Point2dF OrgB,
														float LOrgStdAB, float mmpA, float mmpB,
														Point2dF SampStdA, Point2dF SampStdB, Point2dF SampStdC, Point2dF SampStdD,
														Point2dF SampA, Point2dF SampB, Point2dF SampC, Point2dF SampD,
														float deltaX, float deltaY, float deltaA
														);


	//不映射的2对4，其中4为Org，2为Samp
	MICRODIST_API AlignData		   SY_MD_NoMap_Align_2To4(int CamStatus,
														Point5dVec paramA, Point5dVec paramB,
														Point2dF OrgStdA, Point2dF OrgStdB, Point2dF OrgStdC, Point2dF OrgStdD, 
														Point2dF OrgA, Point2dF OrgB, Point2dF OrgC, Point2dF OrgD,
														float LOrgStdAB, float LOrgStdBC, float mmpA, float mmpB, float mmpC, float mmpD,
														Point2dF SampStdA, Point2dF SampStdB,
														Point2dF SampA, Point2dF SampB,
														float deltaX, float deltaY, float deltaA
														);


	//不映射的4对4贴合函数
	//AFlag: 0--对角线角度 1--水平线角度 2--垂直线角度 3--AB边角度  4--DC边角度  5--AD边角度  6--BC边角度  7--AB、AD、BC边角度
	//		 8--由XYFlag模式9、10控制取对应边角度（即以A或B点不相关的两条边进行补偿和偏差角度输出）

	//XYFlag: 0--4通道中心 1--A坐标 2--B坐标 3--C坐标 4--D坐标 5--AB连线 6--DC连线 7--AD连线 8--BC连线
	//		  9--A通道看主控点  10--B通道看主控点
	MICRODIST_API AlignData		   SY_MD_NoMap_Align_4To4(int CamStatus,
														Point5dVec paramA, Point5dVec paramB, Point5dVec paramC, Point5dVec paramD,
														Point2dF OrgStdA, Point2dF OrgStdB, Point2dF OrgStdC, Point2dF OrgStdD, 
														Point2dF OrgA, Point2dF OrgB, Point2dF OrgC, Point2dF OrgD, 
														float LOrgStdAB, float LOrgStdBC, float mmpA, float mmpB, float mmpC, float mmpD,
														Point2dF SampStdA, Point2dF SampStdB, Point2dF SampStdC, Point2dF SampStdD,
														Point2dF SampA, Point2dF SampB, Point2dF SampC, Point2dF SampD,
														float LSampStdAB, float LSampStdBC,
														float deltaX, float deltaY, float deltaA,
														int AFlag, int XYFlag
														);


	//不映射的点对点应用
	//OrgXYOffset：实际贴装位置与Org的位置偏移（以相机坐标系为参照，单位毫米）
	MICRODIST_API AlignData			SY_MD_NoMap_Align_PointToPoint(
														int CamStatus,
														Point5dVec param, float mmpOrg,
														Point2dF OrgStd, float OrgStdAngle,
														Point2dF Org, float OrgAngle,
														Point2dF OrgXYOffset,
														Point2dF SampStd, float SampStdAngle,
														Point2dF Samp, float SampAngle,
														float deltaX, float deltaY, float deltaA);

	//不映射的，视野内看全产品的2点对位贴合(不需要外部输入尺寸)
	//XYFlag：0--以AB中点对齐  1--以A点对齐  2--以B点对齐
	MICRODIST_API AlignData			SY_MD_NoMap_Align_P2ToP2_InFOV(int CamStatus, Point5dVec SampParam,
																	Point2dF OrgStdA, Point2dF OrgStdB, Point2dF OrgA, Point2dF OrgB,
																	float mmp_Org,
																	Point2dF SampStdA, Point2dF SampStdB, Point2dF SampA, Point2dF SampB,
																	float deltaX, float deltaY, float deltaA, int XYFlag);
	//不映射的，视野内看全产品的3点对位贴合(不需要外部输入尺寸)
	//AngleFlag: [0]AB、BC同时约束  [1]AB约束  [2]BC约束 [3]视野内补偿
	//XYFlag: [0]X由水平边输出，Y由垂直边输出 [1]A点对齐 [2]B点对齐 [3]C点对齐
	MICRODIST_API AlignData			SY_MD_NoMap_Align_P3ToP3_InFOV(int CamStatus, Point5dVec SampParam,
																	Point2dF OrgStdA, Point2dF OrgStdB, Point2dF OrgStdC, 
																	Point2dF OrgA, Point2dF OrgB, Point2dF OrgC,
																	float mmp_Org,
																	Point2dF SampStdA, Point2dF SampStdB, Point2dF SampStdC, 
																	Point2dF SampA, Point2dF SampB, Point2dF SampC,
																	float deltaX, float deltaY, float deltaA,
																	int AngleFlag, int XYFlag);

	//不映射的，视野内看全产品的4点对位贴合(不需要外部输入尺寸)
	//AFlag: 0--对角线角度 1--水平线角度 2--垂直线角度 3--AB边角度  4--DC边角度  5--AD边角度  6--BC边角度  7--AB、AD、BC边角度
	//		 8--由XYFlag模式9、10控制取对应边角度（即以A或B点不相关的两条边进行补偿和偏差角度输出）

	//XYFlag: 0--4通道中心 1--A坐标 2--B坐标 3--C坐标 4--D坐标 5--AB连线 6--DC连线 7--AD连线 8--BC连线
	//		  9--A通道看主控点  10--B通道看主控点
	MICRODIST_API AlignData			SY_MD_NoMap_Align_P4ToP4_InFOV(int CamStatus, Point5dVec SampParam,
																	Point2dF OrgStdA, Point2dF OrgStdB, Point2dF OrgStdC, Point2dF OrgStdD,
																	Point2dF OrgA, Point2dF OrgB, Point2dF OrgC, Point2dF OrgD,
																	float mmp_Org,
																	Point2dF SampStdA, Point2dF SampStdB, Point2dF SampStdC, Point2dF SampStdD,
																	Point2dF SampA, Point2dF SampB, Point2dF SampC, Point2dF SampD,
																	float deltaX, float deltaY, float deltaA,
																	int AFlag, int XYFlag);


	//检查两点的尺寸【**注意**】【只限于两点成水平或垂直的关系，并且水平时，A左B右；垂直时，A上B下】
	//StdPA、StdPB：基准点
	//LStdPAB：基准点距离
	//SampA、SampB：测量点
	//mmpA、mmpB：通道AB的像素分辨率（mm/pixel）
	//F：0--两点是水平的  1--两点是垂直的
	MICRODIST_API float				SY_MD_Check_Size(Point2dF StdPA, Point2dF StdPB, float LStdPAB, Point2dF SampA, Point2dF SampB, float mmpA, float mmpB, unsigned int F);

	//检查两点的尺寸(两点位置任意，不限于水平与垂直)
	//paramA、paramB：通道SampA SampB的标定信息
	//StdPA、StdPB：基准点
	//LStdPAB：基准点距离
	//SampA、SampB：测量点
	//mmpA、mmpB：通道AB的像素分辨率（mm/pixel）
	MICRODIST_API float				SY_MD_Check_Size_AUTO(Point5dVec paramA, Point5dVec paramB, Point2dF StdPA, Point2dF StdPB, float LStdPAB, Point2dF SampA, Point2dF SampB, float mmpA, float mmpB);


	//Org为平行边，Samp为垂直边【Org 左A右B，Samp上A下B】
	//垂直线对准水平线
	MICRODIST_API AlignData			SY_MD_Align_V2ToH2(int CamStatus,
														Point5dVec paramA, Point5dVec paramB,
														Point2dF OrgStdA, Point2dF OrgStdB,
														Point2dF SampStdA, Point2dF SampStdB,
														Point2dF OrgA, Point2dF OrgB,
														Point2dF SampA, Point2dF SampB,
														float OrgWidth, float OrgHeight,
														float SampWidth, float SampHeight,
														float mpp_OrgA, float mpp_OrgB,
														float deltaX, float deltaY, float deltaA);

	//Org为垂直边，Samp为水平边
	//XYFlag：XY对准方式（预留接口）
	MICRODIST_API AlignData			SY_MD_Align_H2ToV2(int CamStatus,
															Point5dVec paramA, Point5dVec paramB,
															Point2dF OrgStdA, Point2dF OrgStdB,
															Point2dF SampStdA, Point2dF SampStdB,
															Point2dF OrgA, Point2dF OrgB,
															Point2dF SampA, Point2dF SampB,
															float OrgWidth, float OrgHeight,
															float SampWidth, float SampHeight,
															float mpp_OrgA, float mpp_OrgB,
															float deltaX, float deltaY, float deltaA,
															int XYFlag);



	//曝光机对位
	MICRODIST_API AlignData         SY_MD_Expose_Align2(Point5dVec Param[4], Point2dF WPCB[4], Point2dF WFilm[4], bool b_CW, bool b_Y,
													   float Xerror, float Yerror,
													   float Avgerror, float RadiusError, bool b_ChVaild[4], bool Diaflag);

	MICRODIST_API AlignData         SY_MD_Expose_Align2_Test(Point2dF WPCB[4], Point2dF WFilm[4], bool b_CW, bool b_Y, bool b_ChVaild[4], bool Diaflag);

	MICRODIST_API AlignData			SY_MD_Expose_Align_Test(Point2dF WPCB[4], Point2dF WFilm[4], bool b_ChVaild[4]);

	//带符号的精度检查
	MICRODIST_API bool              SY_MD_Expose_Check2(Point5dVec Param[4], Point2dF PCB[4], Point2dF Film[4],
														float Xerror, float Yerror, float Avgerror, float RadiusError, int mode, bool &b_AvgFlag02, bool &b_AvgFlag13, bool b_ChVaild[4], float f);
	
	//不带符号的精度检查
	MICRODIST_API bool				SY_MD_Expose_Check3(Point5dVec Param[4], Point2dF PCB[4], Point2dF Film[4],
														float Xerror, float Yerror, float Avgerror, float RadiusError, int mode, bool &b_AvgFlag02, bool &b_AvgFlag13, bool b_ChVaild[4], float f);
	//每个相机各有标定参数的4对4应用
	MICRODIST_API AlignData         SY_MD_Align_4To4(Point5dVec OrgParam[4], Point5dVec SampParam[4], Point2dF OrgStd[4], Point2dF SampStd[4], Point2dF Org[4], Point2dF Samp[4],
													 float Xoffset, float Yoffset, float Roffset,
													 bool b_CW, bool b_Y);

	//每个相机各有标定参数的2对2应用
	MICRODIST_API AlignData         SY_MD_Align_2To2(Point5dVec OrgParam[2], Point5dVec SampParam[2], Point2dF OrgStd[2], Point2dF SampStd[2], Point2dF Org[2], Point2dF Samp[2],
													 float Xoffset, float Yoffset, float Roffset,
													 bool b_CW, bool b_Y);

	//
	MICRODIST_API AlignData         SY_MD_Free_Align_P(
														Point5dVec CPMA, Point5dVec CPMB,
														Point2dF ORGA, Point2dF ORGB,
														Point2dF SAMPA, Point2dF SAMPB,
														float xoffset, float yoffset, float roffset,
														bool b_CW, bool b_Y);

	//
	MICRODIST_API AlignData         SY_MD_Special_Align2_P(int CamStatus,
															Point5dVec paramA, Point5dVec paramB,
															Point2dF OrgStdA, Point2dF OrgStdB,
															Point2dF SampStdA, Point2dF SampStdB,
															Point2dF OrgA, Point2dF OrgB,
															Point2dF SampA, Point2dF SampB,
															float mpp_OrgA, float mpp_OrgB,
															float deltaX, float deltaY, float deltaA,
															unsigned int XYFlag
														);

	//多功能4相机对位
	//AFlag: 0--对角线角度 1--水平线角度 2--垂直线角度 3--AB边角度  4--DC边角度  5--AD边角度  6--BC边角度 7--AB、AD、BC边角度
	//CtrlFlag: 功能控制字
	//xmm、ymm: 控制物理量
	MICRODIST_API AlignData         SY_MD_Smart_4C_Align(
														Point5dVec CPMA, Point5dVec CPMB, Point5dVec CPMC, Point5dVec CPMD,
														Point2dF ORGA, Point2dF ORGB, Point2dF ORGC, Point2dF ORGD,
														Point2dF SAMPA, Point2dF SAMPB, Point2dF SAMPC, Point2dF SAMPD,
														float Xoffset, float Yoffset, float Roffset,
														bool b_CW, bool b_Y,
														int AFlag,
														float xmm, float ymm,
														int CtrlFlag
														);


	//A    B （补偿方向X+向右，Y+向上）
	//视觉基准点转换函数（2相机水平或对角放置），作XYY补偿时，单独补偿YA（YB）将围绕YB（YA）旋转
	MICRODIST_API void				SY_MD_ConvertORG(Point5dVec CPMA, Point5dVec CPMB, Point2dF OrgA, Point2dF OrgB, Point2dF &newOrgA, Point2dF &newOrgB,
													 float xmm, float yAmm, float yBmm, bool b_CW, bool b_Y);

	//该函数为SY_MD_ConvertORG函数的逆运算，即求出Org姿态转换至NewOrg姿态的补偿量（补偿方向X+向右，Y+向上）
	MICRODIST_API void				SY_MD_ConvertORG_Inverse(Point5dVec CPMA, Point5dVec CPMB, Point2dF OrgA, Point2dF OrgB, Point2dF newOrgA, Point2dF newOrgB,
													 float &xmm, float &yAmm, float &yBmm, bool b_CW, bool b_Y);

	//A
	//
	//B
	//目前补偿方向（X+向右，Y+向上）
	//视觉基准点转换函数（2相机垂直或对角放置），作XXY补偿时，单独补偿XA（XB）将围绕XB（XA）旋转
	MICRODIST_API void				SY_MD_ConvertORGV(Point5dVec CPMA, Point5dVec CPMB, Point2dF OrgA, Point2dF OrgB, Point2dF &newOrgA, Point2dF &newOrgB,
													 float xAmm, float xBmm, float ymm, bool b_CW, bool b_Y);

	//该函数为SY_MD_ConvertORGV函数的逆运算，即求出Org姿态转换至NewOrg姿态的补偿量
	MICRODIST_API void				SY_MD_ConvertORGV_Inverse(Point5dVec CPMA, Point5dVec CPMB, Point2dF OrgA, Point2dF OrgB, Point2dF newOrgA, Point2dF newOrgB,
															  float &xAmm, float &xBmm, float &ymm, bool b_CW, bool b_Y);

	//A    B
	//
	//D    C
	//目前补偿方向（X+向右，Y+向上）
	//[**]当AD或BC垂直两相机时转换类型变为XXY, 参数有如下的变换  xmm--->xAmm   yAmm--->xBmm   yBmm--->ymm
	//视觉基准点转换函数（2\3\4相机），作XYY补偿时，单独补偿XA（XB）将围绕XB（XA）旋转
	//F[4]:表示通道是否要使用
	MICRODIST_API void              SY_MD_ConvertORG4(Point5dVec CPMA, Point5dVec CPMB, Point5dVec CPMC, Point5dVec CPMD,
													  Point2dF OrgA, Point2dF OrgB, Point2dF OrgC, Point2dF OrgD,
													  Point2dF &newOrgA, Point2dF &newOrgB, Point2dF &newOrgC, Point2dF &newOrgD,
													  float xmm_xAmm, float yAmm_xBmm, float yBmm_ymm, bool b_CW, bool b_Y, bool F[4]);

	//该函数为SY_MD_ConvertORG4函数的逆运算，即求出Org姿态转换至NewOrg姿态的补偿量
	MICRODIST_API void              SY_MD_ConvertORG4_Inverse(Point5dVec CPMA, Point5dVec CPMB, Point5dVec CPMC, Point5dVec CPMD,
													  Point2dF OrgA, Point2dF OrgB, Point2dF OrgC, Point2dF OrgD,
													  Point2dF newOrgA, Point2dF newOrgB, Point2dF newOrgC, Point2dF newOrgD,
													  float &xmm_xAmm, float &yAmm_xBmm, float &yBmm_ymm, bool b_CW, bool b_Y, bool F[4]);


	//4相机对位，其中M2代表两相机抓到为XY的Mark， L2代表两相机抓到的为直线边（目前是垂直边）
	//A、B通道观察的是Mark
	//C、D通道观察的是直线边，同时水平或同时垂直（内部自动识别水平、垂直）
	//A、B、C、D 成顺或逆时针位置关系【***】
	//AngleFlag: 0--由角点与直线上的点连线计算  1--由两条直线角平均计算
	MICRODIST_API AlignData			SY_MD_Align_M2L2(Point5dVec CPMA, Point5dVec CPMB, Point5dVec CPMC, Point5dVec CPMD,
													Point2dF OrgA, Point2dF OrgB, LineData OrgLineC, LineData OrgLineD,
													Point2dF SampA, Point2dF SampB, LineData SampLineC, LineData SampLineD,
													float Xoffset, float Yoffset, float Roffset, bool b_CW, bool b_Y, int AngleFlag);

	//4相机对位，其中M2代表两相机抓到为XY的Mark， LM2代表两相机抓到的直线边（目前是垂直边）与法线的交点
	//A、B通道观察的是Mark
	//C、D通道观察的是垂直边
	MICRODIST_API AlignData         SY_MD_Align_M2LM2(Point5dVec CPMA, Point5dVec CPMB, Point5dVec CPMC, Point5dVec CPMD,
													Point2dF OrgA, Point2dF OrgB, Point2dF OrgC, Point2dF OrgD, 
													Point2dF SampA, Point2dF SampB, Point2dF SampC, Point2dF SampD, 
													float Xoffset, float Yoffset, float Roffset, bool b_CW, bool b_Y);


	//局部视野内的对位精度检测（目前内部不单独检查X或Y方向的精度，只检查R和Avg）
	//返回值：0--精度达到  1--均分未达到  2--R精度未达到（涨缩引起）
	MICRODIST_API unsigned int		SY_MD_Precision_Check(Point5dVec Param[2], Point2dF Org[2], Point2dF Samp[2],
														  float Xerror, float Yerror, float RadiusError, float Avgerror);

	//3直线对位应用
	//  ----  0
	//	 | 
	//	 | 2
	//	 |
	//  ----  1
	MICRODIST_API void				SY_MD_LineCalibration3(Point2dF ImageSize[3], CalibrationLines Line[3], float XYDist, float RAngle, Point5dVec &CPM0, Point5dVec &CPM1, Point5dVec &CPM2);
	MICRODIST_API AlignData			SY_MD_LineAlign3(Point2dF ImageSize[3], Point5dVec CPM0, Point5dVec CPM1, Point5dVec CPM2, LineData OrgLine[3], LineData SampLine[3], float offsetX, float offsetY, float offsetR);


	//8相机抓边对位
	MICRODIST_API LineCalibration   SY_MD_LineCalibration8(Point2dF ImageSize[8], CalibrationLines Line[8], float XYDist, float RAngle, 
														   float &L01, float &L23, float &L45, float &L67);
	MICRODIST_API AlignData			SY_MD_LineAlign8(Point2dF ImageSize[8], LineCalibration LC, LineData OrgLine[8], LineData SampLine[8],
													float ComX, float ComY1, float ComY2, double LD[8]);


	//标定信息更新函数
	//StandardParam: 基准信息
	//dx、dy: 相机移动的增量，单位mm
	//相机坐标系为向右是X+，向下是Y+。
	//参照相机坐标系，相机向右移动，则dx为正增量，反之则反。相机向下移动，则dy为正增量，反之则反。
	MICRODIST_API Point5dVec		SY_MD_Renew_Parameter(Point5dVec StandardParam, float dx, float dy);


	//曲线产品的标定、对位函数，每个通道抓取两个点
	MICRODIST_API Point5dVec		SY_MD_Calibration_Curve(Point10dF MovePoint, float XYDist, float RAngle);
	//处理无角度要求的产品，如圆形产品，支持4通道
	MICRODIST_API AlignData			SY_MD_Align_Curve(Point5dVec CPM[4], Point2dF Org[4][2], Point2dF Samp[4][2]);
	
	
	//【曲线】带【直线】特征产品的标定、对位函数
	//相机摆放位置如下
	// 0      1
	//
	// 3      2
	//F: 0--直线为23  1--直线为01  2--直线为03  3--直线为12
	MICRODIST_API LineCalibration	SY_MD_Calibration_Curve_With_Line(Point10dF MovePoint0[2], Point10dF MovePoint1[2], 
																	  Point10dF MovePoint2[2], Point10dF MovePoint3[2],
																	  float XYDist, float RAngle, int F);

	//ComA、ComB、ComC：当F == 0，1时 为XY1Y2   当F == 2，3时 为X1X2Y
	MICRODIST_API AlignData			SY_MD_Align_Curve_With_Line(LineCalibration LC, Point2dF Org0[2], Point2dF Org1[2], Point2dF Org2[2], Point2dF Org3[2],
																Point2dF Samp0[2], Point2dF Samp1[2], Point2dF Samp2[2], Point2dF Samp3[2],
																float ComA, float ComB, float ComC, int F);
	
	//--------------------------世界坐标系对位---------------------------


	//求出平台围绕视觉点CheckPoint旋转RotateAngle的移动量
	//CC：世界坐标下标定的旋转中心
	//CheckPoint：围绕旋转的视觉基准点
	//RotateAngle：围绕视觉基准点旋转的角度
	MICRODIST_API AlignData			SY_MD_Refine_Motion(Point2dF CC, Point2dF CheckPoint, float RotateAngle, bool b_CW);


	//求出旋转中心误差
	//CC：当前被更新的旋转中心
	//RotateAngle：平台旋转的角度
	//dx、dy：平台围绕CheckPoint旋转后，CheckPoint被移动至新位置与原位置的物理误差
	MICRODIST_API Point2dF			SY_MD_Refine_Delta(Point2dF NewCC, float RotateAngle, float dx, float dy, bool b_CW);


	//世界坐标求两点距离
	MICRODIST_API float				SY_MD_TwoPoints_Distance_InWorld(Point2dF CCA, Point2dF WorldPointA, Point2dF CCB, Point2dF WorldPointB);


	//CCA、CCB分别为在物理坐标系里标定得到的旋转中心
	//XYFlag: 0--AB中点  1--A点  2--B点（XY对齐方式）
	//大坐标系里做补偿
	MICRODIST_API AlignData         SY_MD_World_Align_2CA(Point2dF CCA, Point2dF OrgA, Point2dF SampA,
														  Point2dF CCB, Point2dF OrgB, Point2dF SampB,
														  float Xoffset, float Yoffset, float Roffset,
														  bool b_CW, bool b_Y, unsigned int XYFlag);


	//CCA、CCB分别为在物理坐标系里标定得到的旋转中心
	//XYFlag: 0--AB中点  1--A点  2--B点（XY对齐方式）
	//视野内做各自补偿
	MICRODIST_API AlignData		    SY_MD_World_Align_2CB(Point2dF CCA, Point2dF OrgA, Point2dF SampA,
													      Point2dF CCB, Point2dF OrgB, Point2dF SampB,
													      Point2dF CompensateA, Point2dF CompensateB,
													      bool b_CW, bool b_Y, unsigned int XYFlag);


	//世界坐标的4对4应用
	//各坐标均由标定关系转换成物理坐标
	//AngleFlag:角度控制标记 1--水平线角度 2--垂直线角度
	MICRODIST_API AlignData			SY_MD_World_Align_4To4(Point2dF OrgWorldA, Point2dF OrgWorldB, Point2dF OrgWorldC, Point2dF OrgWorldD,
														   Point2dF SampWorldA, Point2dF SampWorldB, Point2dF SampWorldC, Point2dF SampWorldD,
														   float Xoffset, float Yoffset, float Roffset, int AngleFlag);

#ifdef __cplusplus
}
#endif

#endif