Munching squares: Difference between revisions

From Rosetta Code
Content added Content deleted
(rendered image)
(+Java)
Line 1: Line 1:
{{draft task|Raster graphics operations}}[[Category:Graphics algorithms]]
{{draft task|Raster graphics operations}}[[Category:Graphics algorithms]]
Render a graphical pattern where each pixel is colored by the value of 'x xor y' from a color table.
Render a graphical pattern where each pixel is colored by the value of 'x xor y' from a color table.
=={{header|Java}}==
This example will repeat the pattern if you expand the window.
<lang java>import java.awt.Color;
import java.awt.Graphics;


import javax.swing.JFrame;
import javax.swing.JPanel;

public class XorPattern extends JFrame{
private JPanel xorPanel;

public XorPattern(){
xorPanel = new JPanel(){
@Override
public void paint(Graphics g) {
for(int y = 0; y < XorPattern.this.xorPanel.getHeight();y++){
for(int x = 0; x < XorPattern.this.xorPanel.getWidth();x++){
g.setColor(new Color(0, (x ^ y) % 256, 0));
g.drawLine(x, y, x, y);
}
}
}
};
add(xorPanel);
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

public static void main(String[] args){
new XorPattern();
}
}</lang>
[[Image:Xor pattern Java.png|200px]]
=={{header|Mathematica}}==
=={{header|Mathematica}}==



Revision as of 18:15, 28 November 2011

Munching squares is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.

Render a graphical pattern where each pixel is colored by the value of 'x xor y' from a color table.

Java

This example will repeat the pattern if you expand the window. <lang java>import java.awt.Color; import java.awt.Graphics;

import javax.swing.JFrame; import javax.swing.JPanel;

public class XorPattern extends JFrame{

   private JPanel xorPanel;
   public XorPattern(){
       xorPanel = new JPanel(){
           @Override
           public void paint(Graphics g) {
               for(int y = 0; y < XorPattern.this.xorPanel.getHeight();y++){
                   for(int x = 0; x < XorPattern.this.xorPanel.getWidth();x++){
                       g.setColor(new Color(0, (x ^ y) % 256, 0));
                       g.drawLine(x, y, x, y);
                   }
               }
           }
       };
       add(xorPanel);
       setSize(300, 300);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setVisible(true);
   }
   public static void main(String[] args){
       new XorPattern();
   }

}</lang>

Mathematica

<lang Mathematica> ListDensityPlot[

Table[Table[
  FromDigits[BitXor[IntegerDigits[x, 2, 8], IntegerDigits[y, 2, 8]], 
   2], {x, 0, 255}], {y, 0, 255}]]

</lang>

Output #1:

Mathematica output #1

<lang Mathematica> ArrayPlot[Array[BitXor, {511, 511}]] </lang>

Output #2:

Mathematica output #2

OCaml

<lang ocaml>open Graphics

let () =

 open_graph "";
 resize_window 256 256;
 for y = 0 to pred (size_y()) do
   for x = 0 to pred (size_x()) do
     let v = (x lxor y) land 0xFF in
     set_color (rgb v (255 - v) 0);
     plot x y
   done;
 done;
 ignore(read_key())</lang>

Run with:

$ ocaml graphics.cma xor_pattern.ml

Output:

OCaml output