colormatrix
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:A OOP matrix class in Ruby
Graphical editors allow users to edit images in the same way text editors let us modify documents. Images are represented as an M x N array of pixels with each pixel given colour.
Produce a program that simulates a simple interactive graphical editor.

Input
=====

The input consists of a line containing a sequence of commands. Each command is represented by a single capital letter at the start of the line. Arguments to the command are separated by spaces and follow the command character.
Pixel co-ordinates are represented by a pair of integers: 1) a column number between 1 and M, and 2) a row number between 1 and N. Where 1 <= M, N <= 250. The origin sits in the upper-left of the table. Colours are specified by capital letters.

Commands
========

The editor supports 7 commands:

1. I M N. Create a new M x N image with all pixels coloured white (O).
2. C. Clears the table, setting all pixels to white (O).
3. L X Y C. Colours the pixel (X,Y) with colour C.
4. V X Y1 Y2 C. Draw a vertical segment of colour C in column X between rows Y1 and Y2 (inclusive).
5. H X1 X2 Y C. Draw a horizontal segment of colour C in row Y between columns X1 and X2 (inclusive).
6. F X Y C. Fill the region R with the colour C. R is defined as: Pixel (X,Y) belongs to R. Any other pixel which is the same colour as (X,Y) and shares a common side with any pixel in R also belongs to this region.
7. S. Show the contents of the current image 8. X. Terminate the session

Example
=======

In the example below, > denotes input, => denotes program output::

 >I 5 6 
 >L 2 3 A 
 >S

 => 
 OOOOO 
 OOOOO 
 OAOOO 
 OOOOO 
 OOOOO 
 OOOOO

 >F33J 

 >V234W 

 >H342Z 

 >S

=> 
 JJJJJ
 JJZZJ
 JWJJJ
 JWJJJ
 JJJJJ
 JJJJJ

Install
=======

run the following:

 ruby main.rb

Note. The library is not imported correctly so you might need to adapt the path

The algorithm implements Flood-Filling in Ruby, examples taken from Rosetta code

Bibliography 
============

* http://en.wikipedia.org/wiki/Connected-component_labeling
* http://www.cse.msu.edu/~stockman/Book/2002/Chapters/ch3.pdf
* Rosetta code (somewhat lacunary yet very inspiring): http://rosettacode.org/wiki/Bitmap/Flood_fill#Ruby
* http://en.wikipedia.org/wiki/Flood_fill

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。