我想在给定旋转角度的情况下绘制条纹图案。我想出了如何绘制垂直线但不旋转。例如,如果下面的图像输入为45度,我想生成第二张图像。
这是我生成第一张图片的代码: 来自未来导入部门
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
stripe_width = 15
gap = 20
offset = 2
image_size = 250
canvas = np.zeros((image_size, image_size))
current_col = 0
while current_col < image_size:
if current_col + stripe_width + gap <= image_size-1:
canvas[:, current_col:current_col+stripe_width] = 1
current_col += stripe_width + gap
elif current_col + stripe_width <= image_size-1:
canvas[:, current_col:current_col+stripe_width] = 1
current_col = image_size
else:
canvas[:, current_col:] = 1
current_col = image_size
plt.imshow(canvas)
这是我的代码输出的图像: Current Output
这就是我希望旋转的图像看起来像: Desired Output
有什么建议吗?
答案 0 :(得分:0)
您需要针对某些center
使用旋转方法。例如,下面是一个示例方法。您必须根据需要对其进行修改,但这应该足以启动您的代码
def rotate_point(center, point, angle):
"""Rotate point around center by angle
Args:
center:
Center point (tuple, [x,y])
point:
Point to be rotated (tuple, [x,y])
angle:
Angle in radians to rotate by
Returns:
New coordinates for the point
"""
angle = math.radians(angle)
temp_point = point[0]-center[0] , point[1]-center[1]
temp_point = ( -temp_point[0]*math.cos(angle)+temp_point[1]*math.sin(angle) , temp_point[0]*math.sin(angle)-temp_point[1]*math.cos(angle))
temp_point = [temp_point[0]+center[0] , temp_point[1]+center[1]]
return temp_point