title: Rotate Image in Affine Transformation
body: <p>I am having trouble correctly rotating an image in an affine transformation.  Currently the below below is what i'm using:</p>
  
  <pre><code>rotation_matrix = np.array([[np.cos(rotation_angle), 
          -np.sin(rotation_angle),0], 
          [np.sin(rotation_angle),
          np.cos(rotation_angle),0], 
          [0,0,1]])
  </code></pre>
  
  <p>If I set the angle to anything greater than approximately 50 degrees I get an entirely black image without anything in it (I set the new image as entirely black, which indicates that none of the translated pixels are falling within the range of the new image). If i rotate less than 50 degrees I get some portion of the image, but it doesn't look correctly rotated from what I can tell.  Also, origin 0,0 is in the top left corner.  I want part of the image to be obscured if it is rotated outside of the bounds of the original image.</p>
  
  <p>Prior to applying the the rotation, I am taking the inverse via </p>
  
  <pre><code>#get inverse of transform matrix
      inverse_transform_matrix = np.linalg.inv(multiplied_matrices)
  </code></pre>
  
  <p>Where rotation occurs:</p>
  
  <pre><code>def Apply_Matrix_To_Image(matrix_to_apply, image_map):
      #takes an image and matrices and applies it.  
      x_min = 0
      y_min = 0
      x_max = image_map.shape[0]
      y_max = image_map.shape[1] 
  
      new_image_map = np.zeros((x_max, y_max), dtype=int)
  
      for y_counter in range(0, y_max):
          for x_counter in range(0, x_max):
              curr_pixel = [x_counter,y_counter,1]
  
              curr_pixel = np.dot(matrix_to_apply, curr_pixel)
  
              print(curr_pixel)
  
              if curr_pixel[0] &gt; x_max - 1 or curr_pixel[1] &gt; y_max - 1 or x_min &gt; curr_pixel[0] or y_min &gt; curr_pixel[1]:
                  next
              else:
                  new_image_map[x_counter][y_counter] = image_map[int(curr_pixel[0])][int(curr_pixel[1])] 
  
      return new_image_map
  </code></pre>