围绕中心点旋转二维矩形只返回两个正确的点!为什么?

2024-06-01 00:28:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我在wgs84中有4个坐标:

north=39.92911484169648
south=39.88787873513176
east=16.60177886077772
west=16.57366683077252

通过组合它们,我可以得到一个矩形的形状(NW、NE、SW、SE)和上面矩形的中心

39.90849678841412 16.587723359360467

在stackoverflow上,我按照这里的几个答案将矩形转换为零,围绕中心逆时针旋转点70度,然后转换回原始坐标(全部使用python)

def rotate(origin, point, angle):
    """
    Rotate a point counterclockwise by a given angle around a given origin.

    The angle should be given in radians.
    """
    ox, oy = origin
    px, py = point

    qx = ox + cos(angle) * (px - ox) - sin(angle) * (py - oy)
    qy = oy + sin(angle) * (px - ox) + cos(angle) * (py - oy)

    return qx, qy

当我打印回旋转的点时,出于某种原因,我只正确地得到NE和SW。我不明白那是什么原因。我附加了一个图像以使其更清晰,其中白色矩形由初始值构成,红色由旋转坐标构成,而绿色是预期结果

结果打印输出=白色:初始值;红色:按上述代码旋转;绿色:预计

Printout of results=white: initial; red: rotated with above code; green: expected

你能帮我理解为什么,或者建议一个解决方案,或者指出我的错误在哪里吗

非常感谢


Tags: pysinorigincossw中心givenpoint