QSharedPointer<RShape> RCircle::getTransformed(const QTransform& transform) const { RVector ct = center.getTransformed2d(transform); RVector sp = center + RVector(radius, 0); RVector spt = sp.getTransformed2d(transform); return QSharedPointer<RShape>( new RCircle( ct, ct.getDistanceTo(spt) ) ); }
/** * \todo Not working as expected, fix or disable */ QSharedPointer<RShape> RArc::getTransformed(const QTransform& transform) const { RVector ct = center.getTransformed2d(transform); RVector sp = getStartPoint(); RVector spt = sp.getTransformed2d(transform); RVector ep = getEndPoint(); RVector ept = ep.getTransformed2d(transform); //RVector mp = getMiddlePoint(); //RVector mpt = mp.getTransformed2d(transform); RArc* ret = new RArc( ct, ct.getDistanceTo(spt), ct.getAngleTo(spt), ct.getAngleTo(ept), reversed ); // if (!ret->getMiddlePoint().equalsFuzzy(mpt)) { // ret->setReversed(!reversed); // } return QSharedPointer<RShape>(ret); }
QSharedPointer<RShape> REllipse::getTransformed(const QTransform& transform) const { RVector ct = center.getTransformed2d(transform); RVector mp = center + getMajorPoint(); RVector mpt = mp.getTransformed2d(transform); RVector sp = getStartPoint(); RVector spt = sp.getTransformed2d(transform); RVector ep = getEndPoint(); RVector ept = ep.getTransformed2d(transform); QSharedPointer<REllipse> ret = QSharedPointer<REllipse>( new REllipse( ct, mpt - ct, ratio, 0.0, M_PI*2, reversed ) ); ret->setStartParam(ret->getParamTo(spt)); ret->setEndParam(ret->getParamTo(ept)); return ret; }