You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

绕原点(多边形中心)旋转多边形时图形变形问题求助

问题分析与解决

你的旋转函数存在关键错误:计算y_new时误用了已更新的x_new值,而非顶点的原始x坐标,这导致旋转逻辑偏离正确公式,随着角度增大,图形会逐渐变形甚至坍缩。

错误代码的核心问题

这段代码的计算逻辑有误:

x_new = x_new*np.cos(angle) - y_new*np.sin(angle)
y_new = x_new*np.sin(angle) + y_new*np.cos(angle)

第一行已经修改了x_new的值,第二行计算y_new时使用的是修改后的x_new,而非顶点原始的x坐标,完全违背了2D旋转的数学公式。

修正后的代码

正确做法是先保存顶点的原始x、y值,再用原始值计算旋转后的坐标:

"""
rotates robot's vertices around its center point
"""
# configure angle parameters
angle = np.deg2rad(phi)

rotated_vertices = []
for vertex in vertices:
    # 保存顶点原始坐标
    x_old = vertex[0]
    y_old = vertex[1]

    # 使用原始坐标执行正确旋转计算
    x_new = x_old * np.cos(angle) - y_old * np.sin(angle)
    y_new = x_old * np.sin(angle) + y_old * np.cos(angle)

    rotated_vertices.append([x_new, y_new])

return rotated_vertices

原理说明

2D平面中绕原点旋转的正确数学公式为:

旋转后x = 原始x × cosθ - 原始y × sinθ
旋转后y = 原始x × sinθ + 原始y × cosθ

必须使用旋转前的原始坐标进行计算,才能保证每个顶点都按照标准旋转矩阵变换,避免图形变形。

内容的提问来源于stack exchange,提问作者miiguell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 15:13:16