+2  A: 

Find out what the scale is for the setBlue/Red/Green methods. I assume 0 corresponds to black, but what's the brightest? You seem to be assuming it's 1, but it might actually be 255 or something. Even if it is 1, it looks like this code isn't taking the pixel's old value into account, it's just setting it to an exact color, based on its vertical position. Maybe that's what you want, but I doubt it. You probably want to multiply the pixel's current value by something instead.

MatrixFrog
The scale is indeed 0-255.
badp
From the paper : To darken a pixel you multiply the red, green and blue levels by an appropriate fraction. Specifically, if y is in the top half of the picture, all the pixels in row y have their RGB levels multiplied by y*(2.0/h), where h is the height of the picture. The pixels in the bottom half of the picture are not changed. I'm assuming I don't need to use setBlue etc then? Would I use return?
roger34
+1  A: 

Let's look at just one line here:

setBlue(px,y*(2.0/h))

and key part here is

y*(2.0/h)

y changes, as you go down. Let's try some simple values for y and h. Let's say h is 100 and we will examine when y is both 0 and 50 (h/2). For y = 0, we get 0. For y = 50, we get 1. If your range of values for the colors is 256 with 0 being the darkest, then no wonder this is black. What you have is a range of values from 0. to 1., but I'm guessing what you want is to take that number and times it by the old color value.

What you want is:

setBlue(px,y*(2.0/h)*getBlue(px))

and similar things for the other colors.

Justin Peel
Thank you so much! You are amazing.
roger34
Mind marking this as the accepted answer, then? Click on the checkmark at the side of the question.
badp
Haha ok thanks I was wondering if there was a way for me to do that or if it was determined by upvotes.
roger34
+2  A: 

To darken a pixel you multiply the red, green and blue levels by an appropriate fraction.

What you are doing:

setBlue(px,y*(2.0/h))

What you are being told to do:

setBlue(px,y*(2.0/h) * getBlue(px))
badp