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