public ClsBeze cnvOnpointToCntrlpoint(ClsBeze bz, double t1, double t2) { double x1, y1, x2, y2, x3, y3, x4, y4; double ta; double b1p1, b2p1, b3p1, b4p1; double b1p2, b2p2, b3p2, b4p2; double a, b, c, d, e, f; ClsPairAns pa; x1 = bz.x1; y1 = bz.y1; x2 = bz.x2; y2 = bz.y2; x3 = bz.x3; y3 = bz.y3; x4 = bz.x4; y4 = bz.y4; ta = 1 - t1; b1p1 = ta * ta * ta; b2p1 = 3.0 * t1 * ta * ta; b3p1 = 3.0 * t1 * t1 * ta; b4p1 = t1 * t1 * t1; ta = 1 - t2; b1p2 = ta * ta * ta; b2p2 = 3.0 * t2 * ta * ta; b3p2 = 3.0 * t2 * t2 * ta; b4p2 = t2 * t2 * t2; a = b2p1; b = b3p1; c = x2 - b1p1 * x1 - b4p1 * x4; d = b2p2; e = b3p2; f = x3 - b1p2 * x1 - b4p2 * x4; pa = calcSmltqu(a, b, c, d, e, f); if (pa.stat == true) { bz.x2 = pa.ansa; bz.x3 = pa.ansb; } a = b2p1; b = b3p1; c = y2 - b1p1 * y1 - b4p1 * y4; d = b2p2; e = b3p2; f = y3 - b1p2 * y1 - b4p2 * y4; pa = calcSmltqu(a, b, c, d, e, f); if (pa.stat == true) { bz.y2 = pa.ansa; bz.y3 = pa.ansb; } return(bz); }
private ObjFigu cnvArcToFigu(ClsAtrXY atrxy1, ClsAtrXY atrxy2, ClsAtrXY atrxy3) { ObjFigu objFigu; double x1, y1, x2, y2, x3, y3; ClsArcCenter cntr; ClsArcSER ser; ClsBeze bz; double rag; double t1, t2; x1 = atrxy1.x; y1 = atrxy1.y; x2 = atrxy2.x; y2 = atrxy2.y; x3 = atrxy3.x; y3 = atrxy3.y; objFigu = new ObjFigu(); objFigu.kind = Constants.LINEKIND; objFigu.x1 = x1; objFigu.y1 = y1; objFigu.x4 = x3; objFigu.y4 = y3; cntr = m_libCurve.getCurve3pCenter(x1, y1, x2, y2, x3, y3); if (cntr.stat == false) { return(objFigu); } ser = m_libCurve.getCurve3pRagR(x1, y1, x2, y2, x3, y3, cntr.x0, cntr.y0); if (ser.stat == false) { return(objFigu); } bz = new ClsBeze(); bz.x1 = x1; bz.y1 = y1; rag = (ser.erag - ser.srag) / 3.0 + ser.srag; bz.x2 = Math.Cos(rag) * ser.dr + cntr.x0; bz.y2 = Math.Sin(rag) * ser.dr + cntr.y0; rag = (ser.erag - ser.srag) / 3.0 * 2.0 + ser.srag; bz.x3 = Math.Cos(rag) * ser.dr + cntr.x0; bz.y3 = Math.Sin(rag) * ser.dr + cntr.y0; bz.x4 = x3; bz.y4 = y3; t1 = 1.0 / 3.0; t2 = 1.0 / 3.0 * 2.0; bz = m_libCurve.cnvOnpointToCntrlpoint(bz, t1, t2); objFigu.kind = Constants.BEZEKIND; objFigu.x1 = bz.x1; objFigu.y1 = bz.y1; objFigu.x2 = bz.x2; objFigu.y2 = bz.y2; objFigu.x3 = bz.x3; objFigu.y3 = bz.y3; objFigu.x4 = bz.x4; objFigu.y4 = bz.y4; return(objFigu); }