दोनों अनुवाद और घुमावदार एफ़िन ट्रांसफॉर्मेशन हैं, यानी, उन्हें मैट्रिक्स का उपयोग करके प्रदर्शित किया जा सकता है। इसलिए, आपको केवल एक नया ट्रांसफॉर्मर बनाना है जिसका मैट्रिक्स दो परिवर्तनों के मैट्रिस के उत्पाद के बराबर है।
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/strategies/transform/matrix_transformers.hpp>
namespace bg = boost::geometry;
namespace trans = bg::strategy::transform;
typedef bg::model::d2::point_xy<double> point;
int main()
{
trans::translate_transformer<point, point> translate(0, 1);
trans::rotate_transformer<point, point, bg::degree> rotate(90);
trans::ublas_transformer<point, point, 2, 2> translateRotate(prod(rotate.matrix(), translate.matrix()));
point p;
translateRotate.apply(point(0, 0), p);
std::cout << bg::get<0>(p) << " " << bg::get<1>(p) << std::endl;
}
गुणन में मैट्रिक्स के आदेश के बारे में बहुत सावधान:
trans::ublas_transformer<point, point, 2, 2> translateRotate(prod(rotate.matrix(), translate.matrix()));
यहाँ एक पूर्ण काम कर उदाहरण है। उपरोक्त उदाहरण पहले अनुवाद करता है, फिर घुमाता है।
मुझे पूरी तरह से यकीन नहीं है लेकिन मुझे नहीं लगता कि यह अभी तक किया जा सकता है। उम्मीद है कि कोई मुझे गलत साबित करता है। – owagh