如何绘制旋转的条纹图案

时间:2016-09-11 23:18:18

标签: python numpy

我想在给定旋转角度的情况下绘制条纹图案。我想出了如何绘制垂直线但不旋转。例如,如果下面的图像输入为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

有什么建议吗?

1 个答案:

答案 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