【问题标题】:Moving Geometry by Centroid按质心移动几何
【发布时间】:2017-02-13 04:29:21
【问题描述】:

我有一个积分集合:

[[2000,3000], [2000,12000], [10000,120000], [10000,3000], [2000,3000]]

它的中心位于坐标[6000, 7500]

有什么方法可以围绕新中心[x_new, y_new] 移动所有坐标?例如,如果我想在 [0,0] 周围移动所有 x/y,而不是当前中心,但我想保留形状。

形状的顶点并不总是矩形,我只是用它来做一个简单的例子。

我想将第 3 方模块限制为 numpy 和标准 python 库。

谢谢!

【问题讨论】:

    标签: python numpy geometry


    【解决方案1】:

    通过向每个点添加相同的位移矢量来实现同步移动一组点。

    使用 numpy 很容易

    import numpy as np
    points = np.array([[2000,3000], [2000,12000], [10000,120000], [10000,3000], [2000,3000]])
    com = np.mean(points, axis=0)
    delta = np.array((0, 0)) - com
    shifted_points = points + delta
    

    【讨论】:

    • 谢谢保罗。我试图使用仿射变换来做到这一点,但它对我来说效果不佳.. 这更容易。
    • 旋转和倾斜是我接下来要完成的几何任务!
    • 为此,您必须查看旋转矩阵np.array([[np.cos(r), np.sin(r)], [-np.sin(r), np.cos(r)]]) 和倾斜矩阵np.array([[1, s], [0, 1]])。祝你好运! P.S.:如果你想把它全部结合起来,你可能想最后回到仿射变换。
    猜你喜欢
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 2014-10-05
    • 1970-01-01
    • 2020-08-02
    • 2013-11-15
    相关资源
    最近更新 更多