Image Rotation in Ruby: Rotate NxN Matrix by 90 Degrees

Ruby @ Freshers.in

Rotating an image or matrix is a common operation in image processing and computer graphics. In Ruby, mastering the technique to rotate an NxN matrix by 90 degrees is essential for various applications. In this article, we’ll delve into how to implement a function in Ruby to achieve this rotation, accompanied by detailed examples and outputs to unravel the intricacies of image manipulation in programming.

Understanding Image Rotation

Rotating an image or matrix by 90 degrees involves shifting its elements in a clockwise or counterclockwise direction, creating a new transformed image or matrix.

Example: Rotating NxN Matrix in Ruby

Let’s define a Ruby function called rotate_image to rotate an NxN matrix by 90 degrees.

def rotate_image(matrix)
  n = matrix.length

  (0...n / 2).each do |layer|
    first = layer
    last = n - 1 - layer

    (first...last).each do |i|
      offset = i - first
      top = matrix[first][i]

      # left -> top
      matrix[first][i] = matrix[last - offset][first]

      # bottom -> left
      matrix[last - offset][first] = matrix[last][last - offset]

      # right -> bottom
      matrix[last][last - offset] = matrix[i][last]

      # top -> right
      matrix[i][last] = top
    end
  end

  matrix
end

# Test the function with an example matrix
matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

puts "Original Matrix:"
matrix.each { |row| puts row.join(' ') }

puts "\nRotated Matrix:"
rotated_matrix = rotate_image(matrix)
rotated_matrix.each { |row| puts row.join(' ') }

Output:

Original Matrix:
1 2 3
4 5 6
7 8 9

Rotated Matrix:
7 4 1
8 5 2
9 6 3

In this example, the rotate_image function correctly rotates the given matrix by 90 degrees clockwise, producing the desired output.

Author: user