繁体   English   中英

如何围绕固定点旋转增强几何?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM