【问题标题】:Rotating curves around an origin in python在python中围绕原点旋转曲线
【发布时间】:2017-10-24 10:14:59
【问题描述】:

我有两条围绕原点 z 和 y 相交的曲线,如下所示。当我根据某些功能绘制这些图时,我得到了附加图。

origin_z = 260
origin_y = 244

plt.plot(phi_z+origin_z,phi_y+origin_y,'b')
plt.plot(phi_z+origin_z,phi_y+origin_y,'r')

其中 phi_z 和 _y 是一些函数(为了清楚起见,我避免发布)。我想将两条线绕指定原点顺时针旋转约 45 度,但是当我尝试以下代码时,它只是沿每个轴进一步移动曲线而不是旋转它们:

phi_z_rot = origin_z + np.cos(45) * (phi_z - origin_z) - np.sin(45) * (phi_z - origin_z)
phi_y_rot = origin_y + np.cos(45) * (phi_y - origin_y) - np.sin(45) * (phi_y - origin_y)

谁能告诉我我做错了什么?很抱歉没有发布更多功能,但希望没有必要。

【问题讨论】:

  • "..为了清楚起见,我避免发帖"minimal reproducible example 相矛盾。如果这些不重要,请完全忽略它们,或者如果它们很重要,请以简化的方式显示它们。但要确保问题是可重现的。您不能指望人们猜测哪个变量用于哪个目的以及您遇到问题的实际代码的哪个位置。我想,一旦你提供这样的minimal reproducible example,你可以很快得到答案。
  • 作为@ImportanceOfBeingErnest 的附录,避免发布不相关 代码通常是一个好主意,但您只是有点过火了。
  • 可能,您也可以重新访问rotation matrix。您的旋转矩阵甚至不是这里的矩阵。

标签: python numpy matplotlib


【解决方案1】:

没有太多信息,我可以明确提供的信息很少。无论如何,你的轮换是错误的。首先角度是度数而不是弧度,然后使用不正确的旋转矩阵。

避免坐标平移,正确的旋转如下:

rot = np.pi/4
phi_z_rot = phi_z*np.cos(rot)+phi_y*np.sin(rot)
phi_y_rot = -phi_z*np.sin(rot)+phi_y*np.cos(rot)

【讨论】:

    猜你喜欢
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 2023-03-23
    • 2014-10-16
    • 1970-01-01
    相关资源
    最近更新 更多