python - 如何使用 numpy 数组将 python 中的形状旋转 +/- x 度?

标签 python arrays numpy rotation

我是 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/

相关文章:

python - 使用装饰器链在程序退出时注册类方法

python - 用于多任务学习神经网络的 Keras 的顺序与功能 API

java - 按字母顺序对数组进行排序,但数组中充满了对象,我需要按特定参数排序

python - Opencv 将 numpy.zeros 绘制为灰度图像

python - 忽略对角线的 Numpy 数组的最小值

python - 如何使用 pygame 制作游戏中的命令控制台

python - Django View 可以接收列表作为参数吗?

c++ - 二维数组分配,C++

php - (PHP) 获取数组(对象)不同结构的通用代码

python - 用python numpy插值