我是 python 的新手,我正在尝试将一个形状(它是一个内部有切口的闭合圆)旋转 +/- x 度。度数值由用户交互给出(用户选择将图形旋转的度数)。
该函数必须对整个形状(包括切口)进行操作,我想使用 numpy 数组来完成。
我是 python 的新手,我什至不确定从哪里开始,所以我没有任何连贯的代码可以发布,否则我会发布。
对于形状中的每条曲线,我试图将其转换为以下形式:
x' = xr + (x-xr)cos(angle) - (y - yr) sin(angle)
和
y' = yr + (x-xr)sin(angle) + (y - yr) cos(angle)
其中 (x',y')
是输出中的点,angle
= 旋转角度,(xr, yr)
= 点旋转,然后我想返回旋转(修改)的形状。
我将继续努力,看看我是否能想出更好的东西来发布,但我们将不胜感激任何帮助。
如果您有任何疑问,或者需要澄清,请告诉我。
最佳答案
使用您的符号并假设 x,y
都是包含您的曲线的相同大小的列表,这就是我要获取数组 x_new 的方法:
xr_arr = xr * ones(len(x))
yr_arr = yr * ones(len(y))
angle_arr = angle * ones(len(x))
x_new = xr_arr + (x - xr_arr)*cos(angle_arr) - (y - yr_arr)*sin(angle_arr)
这假设您已在脚本中包含 from numpy import *
。同理可以得到数组y_new。如果您有多条曲线,您可以使用二维数组进行类似的操作。
EDIT: As Jaime mentions below, if
x,y
are numpy arrays, there is no need to vectorize xr,yr, and angle.
关于python - 如何使用 numpy 数组将 python 中的形状旋转 +/- x 度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20129043/