Drawing a Square on Black Background: Troubleshooting

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
3 replies · 2K views
static
Messages
3
Reaction score
0
My task is to draw a square on black background using ppm.
What I did is this loop:
Code:
	for (int h=0; h<=480; h++){
		for (int w=0; w<=640; w++){

				if (h>100 && h<380 && w<460){
				//green paint
			fprintf (fp, "%s", greenColor); 
			fprintf (fp, "%s", space);
				} else {
				//paint in black
			fprintf (fp, "%s", blackColor);
			fprintf (fp, "%s", space);
fprintf (fp, "%s", "\n");
				}
				
			}
			
		
	
	}

but instead of getting a square I get sth like this:
http://www.polew.pl/file/wastage/test.gif

Why?
 
Last edited by a moderator:
Physics news on Phys.org
How are your strings greenColor, blackColor, and space defined? It looks to me like some of your lines are too long and are wrapping to the next screen line.

I'm assuming that you are drawing lines from the top of the screen down, and that the upper left corner of the screen is (0, 0) and the lower right corner is (639, 479). This means that both your loops are running one iteration too many. The outer loop should be
Code:
for (h = 0; h < 480 ; h++)
{
}
and your inner loop should be similarly adjusted
Code:
for (w = 0; h < 640 ; h++)
{
}
My outer loop runs 480 times; yours runs 481 times. My inner loop runs 640 times for each iteration of the outer loop; your runs 641 times for each iteration of the outer loop.

Those points aside, your code puzzles me. I would think you would want to draw some solid black lines for 100 screen lines, and then draw lines that are black for the first 100 pixels, then green for 280 pixels, then black again for the remainder of each line for lines 101 through 379. I don't see your code doing the first black part on each line that the rectangle is in.

After that, you want to draw all black lines for the remaining screen lines.
 
thanks Mark44, it works!
I just deleted equation signs from outer and inner loop and beautiful green square appeared.