[英]How to rotate boost geometry around a fixed point?
我是使用 boost 的新手。 我想写一个 function 来围绕一个固定点旋转几何。 我试图提升官方示例,但我无法弄清楚这是如何工作的,因为它说
Rotate 将几何图形围绕固定点(例如原点)旋转指定角度
在官方页面中。
这是我的代码:
namespace trans = bg::strategy::transform;
point_2d p4;
trans::rotate_transformer<bg::degree, double, 2, 2> rotate(angle);
bg::transform(p, p4, rotate);
但是我不明白把固定点放在哪里? 还是我必须再次翻译、旋转和翻译?
提前致谢。
boost库允许简单的2D转换,例如平移,围绕原点旋转,缩放......所以在你的情况下,你必须将你的点的坐标表达为固定点P的参考(通过翻译{- xp, -yp}),然后旋转它,最后将新坐标表示为原点参考(再次是平移 {xp, yp})。 最好的问候, 阿诺
要相对于固定点(顺时针)旋转几何图形,可以使用 matrix_transformer:
bg::strategy::transform::matrix_transformer<double, 2, 2> trans(
cos(angle), sin(angle), x0,
-sin(angle), cos(angle), y0,
0, 0, 1);
boost::geometry::transform(raw, result, trans);
(x0, y0) 是固定点的坐标,angle 是指定的角度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.