xxxxxxxxxx
//int snowflake[][] = new int[36][36];
float center = 17.5;
class Point
{
int x;
int y;
int c;
Point( int _x, int _y )
{
x = _x;
y = _y;
}
void draw()
{
float x1 = x;
float y1 = y;
float angle = atan2( x1, y1 );
float distance = sqrt( x1 * x1 + y1 * y1 );
fill(255);
strokeWeight(1);
stroke(0);
//color c = 255;
for ( int i = 0; i < 6; i++ )
{
float x2 = sin(angle+i*3.141592654/3.0)*distance+center;
float y2 = cos(angle+i*3.141592654/3.0)*distance+center;
rect(16*int(x2), 16*int(y2), 16,16);//snowflake[int(x1+17.5)][int(y1+17.5)];// + snowflake[int(x2)][int(y2)])/2;
}
}
};
ArrayList<Point> points = new ArrayList<Point>();
void setup()
{
size(576,576);
frameRate(120);
}
int c = 0;
void draw()
{
//background(0);
fill(0);
strokeWeight(1);
stroke(64);
for ( int y = 0; y < 36; y++ )
{
for ( int x = 0; x < 36; x++ )
{
rect(16*x, 16*y, 16,16);
}
}
noStroke();
for ( int i = 0; i < points.size(); i++ )
{
points.get(i).draw();
}
}
void mousePressed()
{
if ( shiftDown )
{
//print("shiftdown");
int x = int(mouseX/16.0);
int y = int(mouseY/16.0);
for ( int j = points.size()-1; j>=0; j-- )
{
float x1 = points.get(j).x;
float y1 = points.get(j).y;
float angle = atan2( x1, y1 );
float distance = sqrt( x1 * x1 + y1 * y1 );
for ( int i = 0; i < 6; i++ )
{
int x2 = int(sin(angle+i*3.141592654/3.0)*distance+center);
int y2 = int(cos(angle+i*3.141592654/3.0)*distance+center);
if ( x == x2 && y == y2 )
points.remove(j);//rect(16*int(x2), 16*int(y2), 16,16);//snowflake[int(x1+17.5)][int(y1+17.5)];// + snowflake[int(x2)][int(y2)])/2;
}
}
}
else
{
points.add( new Point(int(mouseX/16.0-center), int(mouseY/16.0-center)));
}
}
boolean shiftDown = false;
void keyPressed()
{
if ( keyCode == SHIFT )
shiftDown = true;
if ( key == 'z' )
{
if ( points.size() > 0 )
points.remove(points.size()-1);
}
if ( key == 's' )
{
if ( points.size() > 0 )
points.remove(points.size()-1);
}
}
void keyReleased()
{
if ( keyCode == SHIFT )
shiftDown = false;
}