Munching squares: Difference between revisions
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(); }
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:
<lang Mathematica> ArrayPlot[Array[BitXor, {511, 511}]] </lang>
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: