bool RSpline::mirror(const RLine& axis) { RVector sp = getStartPoint(); RVector ep = getEndPoint(); for (int i=0; i<controlPoints.size(); i++) { controlPoints[i].mirror(axis); } for (int i=0; i<fitPoints.size(); i++) { fitPoints[i].mirror(axis); } RVector absTan = sp+tangentStart; absTan.mirror(axis); sp.mirror(axis); tangentStart = absTan-sp; absTan = ep+tangentEnd; absTan.mirror(axis); ep.mirror(axis); tangentEnd = absTan-ep; update(); return true; }
bool RArc::mirror(const RLine& axis) { center.mirror(axis); if (isFullCircle()) { return true; } reversed = (!reversed); RVector v; v.setPolar(1.0, startAngle); v.mirror(RVector(0.0, 0.0), axis.endPoint - axis.startPoint); startAngle = v.getAngle(); v.setPolar(1.0, endAngle); v.mirror(RVector(0.0, 0.0), axis.endPoint - axis.startPoint); endAngle = v.getAngle(); return true; }
bool REllipse::mirror(const RLine& axis) { RVector mp = center + majorPoint; RVector sp = getStartPoint(); RVector ep = getEndPoint(); center.mirror(axis); mp.mirror(axis); majorPoint = mp - center; if (!isFullEllipse()) { reversed = (!reversed); sp.mirror(axis); setStartParam(getParamTo(sp)); ep.mirror(axis); setEndParam(getParamTo(ep)); } return true; }
bool RDimRotatedData::mirror(const RLine& axis) { RDimLinearData::mirror(axis); //extensionPoint1.mirror(axis); //extensionPoint2.mirror(axis); RLine neutralAxis = axis; neutralAxis.move(-neutralAxis.getStartPoint()); RVector vec = RVector::createPolar(1.0, rotation); vec.mirror(neutralAxis); rotation = vec.getAngle(); update(); return true; }