您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页填充算法原代码

填充算法原代码

来源:意榕旅游网
 填充算法

void FillLineMethod(CjsonObject obj_cjson,float Angle,unsigned int index) { int16 i,j,flag; int16 cnti,cntj,cntk; float miny,maxy,fillY,fpx,fpx_a,fpx_b; stLine fsline,nsline; int16 FillLoopNum; float FillStep; tOutNode inNode_a,inNode_b,outNode_a,outNode_b; tsingu Tsingu,Tsingua,Tsingub; stLine preline,curline; float fPolygonCos; uint16 maxpower=fpga_prev_power; vector iVecfline; vector iVecfaddline; vector iVecpx; vector iVecsingu; iVecfline.clear(); FillStep=obj_cjson.j_shape.p_techpara.farray_para[index].fillarray_fp.pth; /* for(i=0;ifsline.Y0=outNode_a.Y; fsline.X1=outNode_b.X; fsline.Y1=outNode_b.Y; iVecfline.push_back(fsline); } /*for(i=0;ifsline.Y1) { maxy=fsline.Y0; miny=fsline.Y1; } else { maxy=fsline.Y1; miny=fsline.Y0;

}

for(i=0;ifsline.Y1) { if(maxyfsline.Y1) { miny=fsline.Y1; } } else { if(maxyfsline.Y0) { miny=fsline.Y0; } } }

//printf(\"maxy=%5.4f,miny=%5.4f\\n\FillLoopNum=(maxy-miny)/(FillStep);

//printf(\"FillLoopNum=%d\\n\iVecfaddline.clear();

for(i=0;i<=FillLoopNum;i++) { fillY=miny+i*FillStep; //printf(\"fillY=%5.4f\\n\ iVecpx.clear(); iVecsingu.clear(); //printf(\"iVecfline.size=%d\\n\ for(j=0;jfsline.Y1) {

if((fillY>fsline.Y1)&&(fillY-0.000001)) { flag=2; } if(((fillY-fsline.Y1)<0.000001)&&((fillY-fsline.Y1)>-0.000001)) { flag=3; } } else { if((fillY>fsline.Y0)&&(fillY-0.000001)) { flag=2; } if(((fillY-fsline.Y1)<0.000001)&&((fillY-fsline.Y1)>-0.000001)) { flag=3; } }

//printf(\"flag=%d,j=%d\\n\if(flag==1) { if(((fsline.X0-fsline.X1)<0.000001)&&((fsline.X0-fsline.X1)>-0.000001)) { iVecpx.push_back(fsline.X0); //printf(\"fsline.X0=%5.4f\\n\ } else { fpx=fsline.X0+(fillY-fsline.Y0)*(fsline.X1-fsline.X0)/(fsline.Y1-fsline.Y0); iVecpx.push_back(fpx); //printf(\"fpx=%5.4f\\n\ } }

if(flag==2) { Tsingu.epx=fsline.X0; if(fsline.Y1>fillY) Tsingu.dir=1; else Tsingu.dir=-1; iVecsingu.push_back(Tsingu); //printf(\"Tsingu.epx=%5.4f,Tsingu.dir=%d\\n\ } if(flag==3) { Tsingu.epx=fsline.X1; if(fsline.Y0>fillY) Tsingu.dir=1; else Tsingu.dir=-1; iVecsingu.push_back(Tsingu); //printf(\"Tsingu.epx=%5.4f,Tsingu.dir=%d\\n\ } }

if((iVecsingu.size())>1) { for(cnti=0;cnti}

}

for(cnti=0;cnti//printf(\"iVecpx.size=%d\\n\/*for(cnti=0;cntiif((iVecpx.size())>1) { for(cnti=0;cntiif((obj_cjson.j_shape.p_techpara.farray_para[index].fillarray_fp.stl == 1)||(i%2 == 0)) { if(fpx_bif((obj_cjson.j_shape.p_techpara.farray_para[index].fillarray_fp.stl == 3)&&(i%2 == 1)) { if(fpx_b>fpx_a) { cntk=cntj; } }

}

} if(cntk!=cnti) { fpx_a=iVecpx.at(cntk); fpx_b=iVecpx.at(cnti); iVecpx.insert(iVecpx.begin()+cntk,fpx_b); iVecpx.erase(iVecpx.begin()+cntk+1); iVecpx.insert(iVecpx.begin()+cnti,fpx_a); iVecpx.erase(iVecpx.begin()+cnti+1); }

if((iVecpx.size())%2==1) { for(cnti=0;cntioutNode_b=VectorRotePoint(inNode_b,Angle,-1);

fsline.X0=outNode_a.X; fsline.Y0=outNode_a.Y; fsline.X1=outNode_b.X; fsline.Y1=outNode_b.Y; iVecfaddline.push_back(fsline); } } else { for(cnti=0;cntioutNode_b=VectorRotePoint(inNode_b,Angle,-1); fsline.X0=outNode_a.X; fsline.Y0=outNode_a.Y; fsline.X1=outNode_b.X; fsline.Y1=outNode_b.Y; iVecfaddline.push_back(fsline); } } if((obj_cjson.j_shape.p_techpara.farray_para[index].fillarray_fp.stl == 1)||(i == 0)) { delaypara1cmd(obj_cjson.j_shape.p_techpara.delay_para.jd,obj_cjson.j_shape.p_techpara.delay_para.md); CommandOutput(); delaypara2cmd(obj_cjson.j_shape.p_techpara.delay_para.spd,obj_cjson.j_shape.p_techpara.delay_para.epd); CommandOutput(); speedfreqparacmd(obj_cjson.j_shape.p_techpara.carve_para.sp,obj_cjson.j_shape.p_techpara.carve_para.js, obj_cjson.j_shape.p_techpara.carve_para.frq); CommandOutput(); MarkBeginFlag =1; } else { MarkBeginFlag =0; } for(cnti=0;cnti0) { preline=iVecfaddline.at(cnti-1); fPolygonCos=-VectorsAngleCalc(preline,curline); } else { fPolygonCos=-1;

} SingleLineAdddelayInterpolate(curline,fPolygonCos,(uint16)(obj_cjson.j_shape.p_techpara.farray_para[index].fillarray_mp.pwr*maxpower/100)); } MoveCommand(COMMAND_MARK_EOP,(uint16)(obj_cjson.j_shape.p_techpara.farray_para[index].fillarray_mp.pwr*maxpower/100),CurrentX,CurrentY); CommandOutput(); iVecfaddline.clear(); } } iVecfline.clear(); iVecpx.clear(); iVecsingu.clear(); iVecwhline.clear(); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务