PImage originalFingerprint;
PImage updatedFingerprint;
int imageWidth; //image width
int imageHeight; //image height
int imgCount = 0;
byte[][] imageArray; // The binary fingerprint image as an array
byte[][] maskArray; // The binary mask as an array
void thinning(){
for (int col=1; col<originalFingerprint.width-1; col++) {
for (int row=1; row<originalFingerprint.height-1; row++) {
maskArray[col][row] = 0;
//Check if its black or white
if (brightness(originalFingerprint.get(col, row)) < 127)
//if black then
imageArray[col][row] = 1;
else
//if white then...
imageArray[col][row] = 0;
//If the pixel in the array is black then...
if (imageArray[col][row] == 1) {
//1st pass
//If the pixel above is white, and the pixel below is black then...
if(imageArray[col][row-1] == 0 && imageArray[col][row+1] == 1){
//Check connectivity
if (((1-imageArray[col+1][row]) - ((1-imageArray[col+1][row])*(1-imageArray[col+1][row-1])*(1-imageArray[col][row-1])) +
(1-imageArray[col][row-1]) - ((1-imageArray[col][row-1])*(1-imageArray[col-1][row-1])*(1-imageArray[col-1][row])) +
(1-imageArray[col-1][row]) - ((1-imageArray[col-1][row])*(1-imageArray[col+1][row+1])*(1-imageArray[col][row+1])) +
(1-imageArray[col][row+1]) - ((1-imageArray[col][row+1])*(1-imageArray[col+1][row+1])*(1-imageArray[col+1][row]))) == 1) {
maskArray[col][row] = 1;
imageArray[col][row] = 0;
}
}
//2nd pass
//if pixel left is white and right is black
if(imageArray[col-1][row] == 0 && imageArray[col+1][row] == 1){
//Check connectivity
if (((1-imageArray[col+1][row]) - ((1-imageArray[col+1][row])*(1-imageArray[col+1][row-1])*(1-imageArray[col][row-1])) +
(1-imageArray[col][row-1]) - ((1-imageArray[col][row-1])*(1-imageArray[col-1][row-1])*(1-imageArray[col-1][row])) +
(1-imageArray[col-1][row]) - ((1-imageArray[col-1][row])*(1-imageArray[col+1][row+1])*(1-imageArray[col][row+1])) +
(1-imageArray[col][row+1]) - ((1-imageArray[col][row+1])*(1-imageArray[col+1][row+1])*(1-imageArray[col+1][row]))) == 1) {
maskArray[col][row] = 1;
imageArray[col][row] = 0;
}
}
//3rd pass
//if pixel above is black and pixel below is white
if(imageArray[col][row-1] == 1 && imageArray[col][row+1] == 0){
//Check connectivity
if (((1-imageArray[col+1][row]) - ((1-imageArray[col+1][row])*(1-imageArray[col+1][row-1])*(1-imageArray[col][row-1])) +
(1-imageArray[col][row-1]) - ((1-imageArray[col][row-1])*(1-imageArray[col-1][row-1])*(1-imageArray[col-1][row])) +
(1-imageArray[col-1][row]) - ((1-imageArray[col-1][row])*(1-imageArray[col+1][row+1])*(1-imageArray[col][row+1])) +
(1-imageArray[col][row+1]) - ((1-imageArray[col][row+1])*(1-imageArray[col+1][row+1])*(1-imageArray[col+1][row]))) == 1) {
maskArray[col][row] = 1;
imageArray[col][row] = 0;
}
}
//4th pass
//if pixel left is black and right is white
if(imageArray[col-1][row] == 1 && imageArray[col+1][row] == 0){
//Check connectivity
if (((1-imageArray[col+1][row]) - ((1-imageArray[col+1][row])*(1-imageArray[col+1][row-1])*(1-imageArray[col][row-1])) +
(1-imageArray[col][row-1]) - ((1-imageArray[col][row-1])*(1-imageArray[col-1][row-1])*(1-imageArray[col-1][row])) +
(1-imageArray[col-1][row]) - ((1-imageArray[col-1][row])*(1-imageArray[col+1][row+1])*(1-imageArray[col][row+1])) +
(1-imageArray[col][row+1]) - ((1-imageArray[col][row+1])*(1-imageArray[col+1][row+1])*(1-imageArray[col+1][row]))) == 1) {
maskArray[col][row] = 1;
imageArray[col][row] = 0;
}
}
}
// maskArray[col][row] = 0;
}//end 2nd for loop
}//end first for loop
}//end thinning()
void drawNew(){
//Drawing the updated fingerprint
for (int col = 0; col < originalFingerprint.width; col++) {
for (int row = 0; row < originalFingerprint.height; row++) {
if (imageArray[col][row] == 1) updatedFingerprint.set(col, row, 0);
else updatedFingerprint.set(col, row, #FFFFFF);
}
}
}
imageArray = new byte[originalFingerprint.width][originalFingerprint.height];
maskArray = new byte[originalFingerprint.width][originalFingerprint.height];
size(imageWidth*2,imageHeight); //set the size of canvas window
}
i have this game im making where theses balls fall to the ground and the player moves a "pointy device" horizontally to "pop" the balls in order to get points.
i was hoping someone could help me with the popping part here's what i have so far:
ArrayList balls;
int ballRadius = 25;
int level = 1;
int score = 0;
void setup(){
size (450, 700);
fill(0);
smooth();
stroke(0);
strokeWeight(4);
PFont font = loadFont("ComicSansMS-Bold-24.vlw");
textFont(font);
balls = new ArrayList();