亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? profdata.cc

?? 數(shù)控系統(tǒng)中的解釋器源代碼
?? CC
字號:
#include "rs274ngc.hh"
#include "agl.hh"
#include <math.h>


static int     ParaZInf1[4] = {1,-1,-1,1};  /* line(cos) */

/* ------2C------- */
static int     ParaZInf2[4] = {-1,1,1,-1};  /* line(d  ) */


/* ------34------- */
static int     ParaXInf1[4] = {-1,-1,1,1};  /* line(cos) */

/* ------3C------- */
static int     ParaXInf2[4] = {1,1,-1,-1};  /* line(d  ) */


/* ------44------- */
static BYTE      ProfileCheck1[2][4][4] = {
		       {{0x00,0x02,0xFF,0xFF},
			{0x02,0x00,0xFF,0xFF},
			{0xFF,0xFF,0x00,0x02},
			{0xFF,0xFF,0x02,0x00}},

		       {{0x00,0xFF,0xFF,0x02},
			{0xFF,0x00,0x02,0xFF},
			{0xFF,0x02,0x00,0xFF},
			{0x02,0xFF,0xFF,0x00}}
					};

/* Line not in Coordinate Axis */
/* 1--Parallel Axis,2--Profile Direction,3--Line Direction */


/* -------64------- */
static BYTE        ProfileCheck2[2][4][4] = {
                       {{0x00,0x00,0x02,0xFF},
                        {0x02,0x00,0x00,0xFF},
                        {0x02,0xFF,0x00,0x00},
                        {0x00,0xFF,0x02,0x00}},

		       {{0x00,0x00,0xFF,0x02},
			{0xFF,0x00,0x00,0x02},
			{0xFF,0x02,0x00,0x00},
			{0x00,0x02,0xFF,0x00}}
					};
/* Line in Coordinate Axis */
/* 1--Parallel Axis,2--Profile Direction,3--Line Direction */



/* -------84------- */
static BYTE        ProfileCheck3[2][2][4][4] = {
                        {
                            {
				{0xFF,0x04,0x03,0x03},
                                {0xFF,0x02,0x00,0xFF},
                                {0x03,0x03,0xFF,0x04},
				{0x00,0xFF,0xFF,0x02},
			    },
                            {
                                {0x02,0xFF,0xFF,0x00},
                                {0x04,0xFF,0x03,0x03},
                                {0xFF,0x00,0x02,0xFF},
                                {0x03,0x03,0x04,0xFF},
                            },
                        },
                        {
                            {
				{0x02,0x00,0xFF,0xFF},
				{0x03,0xFF,0x04,0x03},
				{0xFF,0xFF,0x02,0x00},
				{0x04,0x03,0x03,0xFF},
			    },
			    {
				{0xFF,0x03,0x03,0x04},
				{0x00,0x02,0xFF,0xFF},
				{0x03,0x04,0xFF,0x03},
                                {0xFF,0xFF,0x00,0x02},
                            },
                        }
                };
/* 1st Arg-Paralleled Axis,2rd Arg-Circle Direction(CW,CCW) */
/* 3th Arg-Profile Direction,4--Circle Quadrant No. */


/* ---------CC--------- */
static BYTE            CriticalTab[2][4] = {
				{0,0,1,1},
				{1,0,0,1}
				};

        /* get Circle Critical Point Value ,0--Maxium Value,1-Minum Value */

/* ---------CC--------- */
static BYTE            IntersectTab[2][2][4] = {
                                {{1,0,1,0},{0,1,0,1}},
                                {{0,1,0,1},{1,0,1,0}}
                                        };

/* Circle intersect Line */
/* 1--Parallel Axis,2--Circle Direction(CW,CCW),3--Profile Direction */



/********************************************************************
 * Procedure:
 *	Compute the Data used by Special Cycle.
 *
 ********************************************************************/
void  CNC_GetDataUsedBySpeCycle(Special_Cycle       *pSpeCycle,
					  BYTE                   SpeCycleState)
{

double		    InchMm;
   

   /* if (pProc->pMeasureInf->ConvertFlag)
	{
	InchMm = pProc->pMeasureInf->Inchmm;
	pSpeCycle->AbsMove *= InchMm;
	pSpeCycle->AbsUOV  *= InchMm;
	pSpeCycle->OrdMove *= InchMm;
	pSpeCycle->OrdUOV  *= InchMm;
	}
  */
    if	( SpeCycleState == 9 )
	{
	pSpeCycle->AbsAdd =
	    (pSpeCycle->AbsMove - pSpeCycle->AbsUOV) / (pSpeCycle->CutStepNum - 1);
	pSpeCycle->OrdAdd =
	    (pSpeCycle->OrdMove - pSpeCycle->OrdUOV) / (pSpeCycle->CutStepNum - 1);
	}
}


/********************************************************************
 * Procedure:
 *	Change the tooling direction accorfing to the tools an profile.
 *
 ********************************************************************/
void  CNC_ChangeToolDirect(Special_Cycle       *pSpeCycle,
				     ProfBlockStruc   *pProfBlock,
				     int    *exception)
{
float           minvalue;
double          d0;
//ProfBlockStruc   *pProfBlock=pSpeCycle->Block,

    minvalue = 0;
    if (pSpeCycle->AbsMove != 0.0 || pSpeCycle->AbsUOV != 0.0)
	{
	d0 = pSpeCycle->AbsMachineValue2 - pProfBlock->Point.PosX;
	if( fabs(d0) < minvalue )
	    *exception = 0x47;
	else if( d0 < 0 )
	    {
	    pSpeCycle->AbsMove = -pSpeCycle->AbsMove;
	    pSpeCycle->AbsUOV  = -pSpeCycle->AbsUOV;
	    pSpeCycle->AbsAdd  = -pSpeCycle->AbsAdd;
	    }
	}

    if ( !*exception )
	if (pSpeCycle->OrdMove != 0.0 || pSpeCycle->OrdUOV != 0.0)
	    {
	    d0 = pSpeCycle->OrdMachineValue2 - pProfBlock->Point.PosY;
	    if ( fabs(d0) < minvalue )
		*exception = 0x47;
	    else if ( d0 < 0 )
		{
		pSpeCycle->OrdMove = -pSpeCycle->OrdMove;
		pSpeCycle->OrdUOV  = -pSpeCycle->OrdUOV;
		pSpeCycle->OrdAdd  = -pSpeCycle->OrdAdd;
		}
	    }
}


/********************************************************************
 * Function:
 *	Determine the direction of a line.
 *
 ********************************************************************/
int  CNC_GetOriginOfLine(ProfBlockStruc            *pProfBlock)
{
float       minvalue;
double      negSineValue, cosineValue;
int         ret = 0;

    minvalue =0;
    negSineValue = pProfBlock->CurveExpression.Element[0];
    cosineValue  = pProfBlock->CurveExpression.Element[1];

    if( (1 - minvalue ) < cosineValue)
	ret = - 1;
    if( (minvalue - 1) > negSineValue)
	ret = - 2;
    if( (minvalue - 1) > cosineValue)
	ret = - 3;
    if( (1 - minvalue) < negSineValue)
	ret = - 4;

    if (ret)
       return(ret);
    if (cosineValue==0)
		if (negSineValue<0)
			ret=4;
		else
			ret=2;
    if (ret)
       return(ret);	
    if (cosineValue >= 0)
	if(negSineValue < 0)
	    ret = 1;
	else
	    ret = 4;
    else
	if(negSineValue <= 0)
	    ret = 2;
	else
	    ret = 3;

    return(ret);
}


/********************************************************************
 * Procedure:
 *	 Determine a line parallel to axis.
 *
 ********************************************************************/
void  CNC_GetLineOfParallelAxis(ProfBlockStruc      *pProfBlock,
					  int                    Paraaxisflag,
					  int                    Profdirection)
{
    if (Paraaxisflag == 1)
	{
	pProfBlock->CurveExpression.Element[0] = 0.0;
	pProfBlock->CurveExpression.Element[1] = ParaZInf1[Profdirection-1];
	pProfBlock->CurveExpression.Element[2] =
		pProfBlock->Point.PosY * ParaZInf2[Profdirection-1];
	}
    else
	{
	pProfBlock->CurveExpression.Element[1] = 0.0;
	pProfBlock->CurveExpression.Element[0] = ParaXInf1[Profdirection-1];
	pProfBlock->CurveExpression.Element[2] =
		pProfBlock->Point.PosX * ParaXInf2[Profdirection-1];
	}
}


/********************************************************************
 * Function:
 *	Determine whether the point locate in the line range.
 *	return 1 if located.
 ********************************************************************/
BYTE  CNC_CheckPointInSegment(Special_Cycle           *pSpeCycle,
					PointVar                *Point)
{
float               minvalue;
BYTE                ret0 = 0, block1;

    block1 = pSpeCycle->BlockNum;
    block1 --;
    minvalue = 0;
   /* if (!pSpeCycle->ParaAxisFlag)
	{
	if ( pSpeCycle->ProfDirection == 0||pSpeCycle->ProfDirection == 1 || pSpeCycle->ProfDirection == 4)
	    {
	    if ( (pSpeCycle->Block[block1].Point.PosX - minvalue)
					       > Point->PosX &&
		 (pSpeCycle->Block[block1-1].Point.PosX - minvalue)
					       < Point->PosX)
		ret0 = 1;
	    }
	else
	    {
	    if ( (pSpeCycle->Block[block1].Point.PosX + minvalue)
						< Point->PosX&&
		 (pSpeCycle->Block[block1-1].Point.PosX + minvalue)
						> Point->PosX)
		ret0 = 1;
	    }
	}
    else
	{
	//if (pSpeCycle->ProfDirection == 0||pSpeCycle->ProfDirection == 1 || pSpeCycle->ProfDirection == 2)
	if (1)
	{
	    DEBUG_PRINT("in \n");
	    if ( (pSpeCycle->Block[block1].Point.PosY - minvalue)
						> Point->PosY &&
		 (pSpeCycle->Block[block1-1].Point.PosY - minvalue)
						< Point->PosY )
		ret0 = 1;
	    }
	else
	    {
	    if ( (pSpeCycle->Block[block1].Point.PosY + minvalue)
						< Point->PosY &&
		 (pSpeCycle->Block[block1-1].Point.PosY + minvalue)
						> Point->PosY )
		ret0 = 1;
	    }
	}*/
    if (pSpeCycle->ParaAxisFlag)
	{
	    
	    if ( (pSpeCycle->Block[block1].Point.PosY - minvalue)
						>= Point->PosY &&
		 (pSpeCycle->Block[block1-1].Point.PosY - minvalue)
						<= Point->PosY )
		ret0 = 1;
		//DEBUG_PRINT("in %d\n",ret0);
		//DEBUG_PRINT("blodk[%d] Y %f ,%f----  %f\n",block1,pSpeCycle->Block[block1].Point.PosY ,pSpeCycle->Block[block1-1].Point.PosY,Point->PosY);
	    }
	else
		{
		if ( (pSpeCycle->Block[block1].Point.PosX - minvalue)
					       >=Point->PosX &&
		 (pSpeCycle->Block[block1-1].Point.PosX - minvalue)
					       <= Point->PosX)
				ret0 = 1;
		//DEBUG_PRINT("in %d\n",ret0);
		//DEBUG_PRINT("blodk[%d] Y %f ,%f----  %f\n",block1,pSpeCycle->Block[block1].Point.PosX,pSpeCycle->Block[block1-1].Point.PosX,Point->PosX);
		}
    return(ret0);
}


/********************************************************************
 * Function:
 *	Determine the relationship between line and previous curve.
 *	return 1(normal),2(cavice),-1(illegal)
 ********************************************************************/
int  CNC_RelationOfLine(int    ParaAxisFlag,
				  int    ProfDirection,
				  int    DirOfLine)
{
int     ret0;

    if ( DirOfLine > 0 )
      ret0 = ProfileCheck1[ParaAxisFlag][ProfDirection -1 ][ DirOfLine - 1];
    else
      ret0 = ProfileCheck2[ParaAxisFlag][ProfDirection -1 ][-DirOfLine - 1];

    return( ret0 );
}


/********************************************************************
 * Function:
 *	Determine the relationship between circle and previous curve.
 *
 ********************************************************************/
int  CNC_RelationOfArc(int                ParaAxisFlag,
				 int                ProfDirection,
				 int                ZoneNo,
				 double          *pDouble)
{
BYTE   circleDir, quad;

    if ( *pDouble > 0 )
	{
	circleDir = 1;
	quad      = (ZoneNo + 2) % 4 + 1;
	}
    else
	{
	circleDir = 0;
	quad      = ZoneNo;
	}

    return( ProfileCheck3[ParaAxisFlag][circleDir][ProfDirection-1][quad-1] );
}


/********************************************************************
 * Procedure:
 *	Determine the polar point in the direction paralled to axis.
 *
 ********************************************************************/
void  CNC_FindArcPolarPoint(ProfBlockStruc      *pProfBlock,
				      int                    ParaAxisFlag,
				      int                    ProfDirection)
{
    pProfBlock->Point.PosX = pProfBlock->CurveExpression.Element[0];
    pProfBlock->Point.PosY = pProfBlock->CurveExpression.Element[1];
    if ( !CriticalTab[ParaAxisFlag][ProfDirection - 1] )
	{
	if ( ParaAxisFlag )
	    pProfBlock->Point.PosY += pProfBlock->CurveExpression.Element[2];
	else
	    pProfBlock->Point.PosX += pProfBlock->CurveExpression.Element[2];
	}
    else
	{
	if ( ParaAxisFlag )
	    pProfBlock->Point.PosY -= pProfBlock->CurveExpression.Element[2];
	else
	    pProfBlock->Point.PosX -= pProfBlock->CurveExpression.Element[2];
	}
}


/********************************************************************
 * Function:
 *	Determine whether the point is on the arc.
 *
 ********************************************************************/
int  CNC_CheckPointOnArc(Special_Cycle           *pSpeCycle,
				   float              MinValue,
				   float                   *MinMeasure)
{
int                 ret0, flag, exception;
BYTE                circleDir, circleDir1, block1;
AGL                 gtl;
double              more1, more2;

    block1 = pSpeCycle->BlockNum;
    block1 --;
    if (pSpeCycle->Block[block1].CurveExpression.Element[2] > 0)
	circleDir = 1;
    else
	circleDir = 0;
    flag = IntersectTab[pSpeCycle->ParaAxisFlag][circleDir][pSpeCycle->ProfDirection];
    CNC_AGLPointOfLineArc((LineVar *)&pSpeCycle->Block[block1-1].CurveExpression,
			  (CircleVar *)&pSpeCycle->Block[block1].CurveExpression,
			  &flag,
			  (PointVar *)&pSpeCycle->AbsValue,
			  MinValue,
			  &exception,
			  &ret0);
    if ( !ret0 )
	{
	CNC_AGLArcOf3Point(&pSpeCycle->Block[block1-1].Point,
			   &pSpeCycle->Block[block1].Point,
			   (PointVar *)&pSpeCycle->AbsValue,
			   (CircleVar *)&gtl,
			   MinValue,
			   MinMeasure,
			   &ret0);
	if ( ret0 )
	    {
	    more1=pSpeCycle->Block[block1-1].Point.PosX - pSpeCycle->AbsValue;
	    more2=pSpeCycle->Block[block1-1].Point.PosY - pSpeCycle->OrdValue;
	    if (fabs(more1) > *MinMeasure ||
		fabs(more2) > *MinMeasure )
	      ret0 = 1;
	    else
	      ret0 = 0;
	    }
	else
	    {
	    if (gtl.Element[2] > 0)
		circleDir1 = 1;
	    else
		circleDir1 = 0;
	    if (circleDir == circleDir1)
		ret0 = 1;
	    }
	}
    return(ret0);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人啪免费观看软件| 国产精品一区二区你懂的| 亚洲国产精品人人做人人爽| 91污片在线观看| 91免费视频大全| 日韩三级电影网址| 精品久久久久久久久久久久久久久| 久久久精品2019中文字幕之3| 国产精品88888| 亚洲一二三区不卡| 高清不卡在线观看av| 偷拍日韩校园综合在线| 久久亚洲春色中文字幕久久久| 福利电影一区二区三区| 亚洲激情六月丁香| 国产亚洲短视频| 亚洲高清一区二区三区| 国产农村妇女精品| 午夜欧美视频在线观看| 成人性生交大片| 韩国视频一区二区| 1024国产精品| 日韩欧美一区二区免费| 成人激情动漫在线观看| 欧美一区二区视频在线观看| 日本黄色一区二区| 激情深爱一区二区| 欧美丝袜丝nylons| 国内精品久久久久影院薰衣草| 成人av电影免费在线播放| 欧美大白屁股肥臀xxxxxx| 91一区在线观看| 国产精品第四页| 国产欧美日韩精品一区| 欧洲日韩一区二区三区| 日韩一区二区免费电影| 不卡电影一区二区三区| 国产日产欧美一区| 日精品一区二区三区| 在线国产亚洲欧美| 91精品福利在线一区二区三区 | 欧美精选在线播放| 精品国产成人在线影院| 亚洲大片一区二区三区| 亚洲激情网站免费观看| 国产高清视频一区| 精品久久久久av影院| 在线电影一区二区三区| 国产精品久久看| 91欧美一区二区| www.一区二区| 国产女人18毛片水真多成人如厕| 精品乱人伦小说| 理论电影国产精品| 欧美tk—视频vk| 亚洲一区二区五区| 日韩一区二区麻豆国产| 日本伊人午夜精品| www精品美女久久久tv| 日韩三级av在线播放| 欧美经典三级视频一区二区三区| 国产毛片一区二区| 精久久久久久久久久久| 天堂蜜桃91精品| 亚洲欧洲制服丝袜| 欧美日韩高清在线| 日韩福利视频网| 性感美女极品91精品| 337p亚洲精品色噜噜狠狠| 日韩免费性生活视频播放| 国产精品久久久久久久久久久免费看| 久久久久久亚洲综合影院红桃 | 亚洲欧洲韩国日本视频| 国产精品午夜免费| 2022国产精品视频| 成人午夜私人影院| 成人精品免费网站| 99精品久久只有精品| 欧美国产欧美综合| 91老师国产黑色丝袜在线| 欧美这里有精品| 精品sm在线观看| 国产精品乱人伦| 欧美丰满嫩嫩电影| 亚洲国产综合91精品麻豆| 国精产品一区一区三区mba桃花| 日本va欧美va瓶| 国产成人在线影院 | 精品一区二区精品| 国产精品一品视频| 久久精品视频在线免费观看| 久久久不卡网国产精品二区| 国产人久久人人人人爽| 精品久久久久久亚洲综合网| 国产黑丝在线一区二区三区| 亚洲色图色小说| 蜜芽一区二区三区| 日韩一区二区三区在线| 国产精品白丝jk白祙喷水网站| 国产成人综合网| 全国精品久久少妇| 国产在线精品免费| 日韩精品每日更新| 国产成人午夜片在线观看高清观看| 国产成人一级电影| 欧美大片拔萝卜| 亚洲国产精品国自产拍av| 在线观看亚洲a| 国v精品久久久网| 欧美丰满一区二区免费视频| 国产精品视频一二| 亚洲资源中文字幕| 国产精品国模大尺度视频| 五月天亚洲婷婷| 亚洲国产综合在线| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产精品久久久久久久久搜平片| 欧美视频在线不卡| 欧美激情一区二区三区四区| 精品污污网站免费看| 国产91清纯白嫩初高中在线观看| 99视频精品免费视频| 天堂va蜜桃一区二区三区| 成人一区二区三区中文字幕| 欧美日韩一级片在线观看| 91老师片黄在线观看| 国产欧美1区2区3区| 久久国产日韩欧美精品| 亚洲图片一区二区| 亚洲色图丝袜美腿| 成人精品一区二区三区中文字幕| 久久精品亚洲精品国产欧美kt∨| 国产精品久久久久影院| 午夜一区二区三区在线观看| 成人精品在线视频观看| 欧美—级在线免费片| 国产在线精品不卡| 日韩一区二区免费高清| 91精品麻豆日日躁夜夜躁| 亚洲三级理论片| 日韩毛片高清在线播放| 亚洲啪啪综合av一区二区三区| 国产99精品视频| 精品对白一区国产伦| 日本中文在线一区| 欧美一激情一区二区三区| 一区二区三区视频在线看| 久久99精品久久只有精品| 欧美日韩一二区| 欧美日本一区二区三区| 欧美日韩一区不卡| 亚洲男人的天堂一区二区| 国产精品久久久久久久午夜片 | 欧美电视剧在线观看完整版| 自拍偷自拍亚洲精品播放| 欧美亚洲高清一区二区三区不卡| 中文字幕一区二区三区精华液 | 欧美激情在线一区二区三区| 日本特黄久久久高潮| 免费在线观看成人| 欧美久久免费观看| 91精品国产手机| 欧美三片在线视频观看| 欧美在线免费播放| 免费成人在线播放| 日韩电影网1区2区| 国产精品亲子伦对白| 中文字幕二三区不卡| 97se亚洲国产综合自在线| 亚洲丝袜自拍清纯另类| 色屁屁一区二区| 性做久久久久久| 日韩视频123| 国产一区二区精品在线观看| 国产亚洲精品aa| 日韩久久一区二区| 亚洲精品免费在线观看| 欧美在线观看视频在线| 亚洲一区二区在线免费观看视频 | 久久se精品一区精品二区| 欧美一三区三区四区免费在线看| 日韩在线一区二区三区| 日韩精品专区在线| 国内久久精品视频| 国产色91在线| 91玉足脚交白嫩脚丫在线播放| 亚洲综合在线电影| 国产一区二区三区四区五区美女| 欧美中文一区二区三区| 天堂久久久久va久久久久| 91精品欧美一区二区三区综合在 | 亚洲精品精品亚洲| 国产一区二区按摩在线观看| 精品国产91久久久久久久妲己| 国产成人久久精品77777最新版本| 国产女人18毛片水真多成人如厕| 色综合色狠狠综合色| 丝瓜av网站精品一区二区| 欧美成人一区二区三区片免费 | 久久久久久99精品|