使用x,y,theta在python中旋转椭圆

时间:2017-10-04 13:04:32

标签: python numpy

我尝试使用以下等式在python中绘制椭圆:

xpos = a*np.cos(theta)
ypos = b*np.sin(theta)

Ellipse

这是有效的,但是当我尝试使用:

旋转生成的椭圆时
xpos = xpos*np.cos(np.pi/2)+ypos*np.sin(np.pi/2)
ypos = -xpos*np.sin(np.pi/2)+ypos*np.cos(np.pi/2)

椭圆变成一条直线,而不是仅旋转90度。造成这种情况的原因是什么?Rotated ellipse

1 个答案:

答案 0 :(得分:2)

您的问题是,您首先要重新定义xpos并将其用于新的ypos,基本上您不会同时进行坐标转换。

如果为新坐标系中的点创建新变量,则会得到旋转的椭圆。

import numpy as np
import matplotlib.pyplot as plt

theta = np.arange(0, 2*np.pi, 0.01)
a = 1
b = 2

xpos = a*np.cos(theta)
ypos = b*np.cos(theta)

new_xpos = xpos*np.cos(np.pi/2)+ypos*np.sin(np.pi/2)
new_ypos = -xpos*np.sin(np.pi/2)+ypos*np.cos(np.pi/2)

plt.plot(xpos, ypos, 'b-')
plt.plot(new_xpos, new_ypos, 'r-')

plt.show()