如何选择图像旋转轴,Magick++?

How do I choose the image rotation axis, Magick++?

我想围绕图像中的某个点旋转图像。我正在使用魔法++。如何选择旋转轴?有旋转功能,但它只允许我设置度数而不能选择轴。

您需要创建仿射变换来映射旋转和过渡。示例...

Magick::Image img("rose:");
double
    originX = 50,
    originY = 75,
    angle = 45.0,
    radians = angle * atan2(1, 1)/45.0,
    sx = cos( radians ),
    rx = sin( radians ),
    ry = -rx,
    sy = sx,
    tx = originX * sx - originY * rx,
    ty = originX * rx + originY * sx;
Magick::DrawableAffine matrix(sx, rx, ry, sy, tx, ty);
img.virtualPixelMethod(Magick::TransparentVirtualPixelMethod);
img.affineTransform(matrix);

可以在 Affine Matrix Transforms usages documents. Includes useful links to 脚本中找到创建仿射矩阵的详细示例,包括共享和原点转换。