double ang = 0.1;
double xscale = 1.2;
double yscale = 1.5;
double xTranslation = 100;
double yTranslation = 200;
cv::Mat t(3,3,CV_64F);
t=0;
t.at<double>(0,0) = xscale*cos(ang);
t.at<double>(1,1) = yscale*cos(ang);
t.at<double>(0,1) = -sin(ang);
t.at<double>(1,0) = sin(ang);
t.at<double>(0,2) = xTranslation ;
t.at<double>(1,2) = yTranslation;
t.at<double>(2,2) = 1;
РЕДАКТИРОВАТЬ:
Вращение всегда вокруг (0,0).Если вы хотите вращаться вокруг другой точки, вам нужно перевести (переместить), повернуть и вернуться назад.Это можно сделать, создав две матрицы, одну для вращения (A
) и одну для перевода (T
), и построив новую матрицу M
как:
M = inv(T) * A * T