在数控系统中,我们常常会将DXF文件转换成G代码,主要涉及到 直线、多段线、圆、圆弧、椭圆、样条曲线、点,七大类,在转换成G代码过程中,其中样条曲线和多段线中凸度问题是比较复杂一些,而样条曲线的转换网上有很多源代码,而处理凸度问题的源代码似乎少很多。最近刚好我也在解析DXF文件,遇到了处理凸度的问题。我花了两天时间集中完成这个难题。通过大量的测试代码基本没有什么问题,凸度问题完美解决了。(其中主要的方法是运用了数学推导出来的方程计算的)
double dConvexityDegree=0; //凸度
long nSumLines = dxf_code.size();
double theta_arc;
double theta_degree ;//角度,包角
double dAngle;//起点到终点的弦向量与X正方向之间的倾斜角
double dStarX=0,dStarY=0;//圆弧起始点
double dEndX=0,dEndY=0; //圆弧终止点
double dStarC=0,dEndC=0; //圆弧起始角度,终止角度
double dmiddleX=0,dmiddleY=0;//起始点和终止点连接线的中点横纵坐标
double dCenterX=0,dCenterY=0;//圆心坐标
double dCenterX1=0,dCenterY1=0;//圆心坐标1
double dCenterX2=0,dCenterY2=0;//圆心坐标2
double dLength; //弦长
double dfR; //半径
double dH; //圆心到弦的距离
//double k; //起始点和终止点连线的中垂线斜率
dou