// Homework 8 // Amy Nichols // Section D // aenichol@andrew.cmu.edu int [ ] yValues = { 40, 20, 60, 70, 40, 40, 30, 80, 50, 120, 40, 80, 80, 10, 50, 70, 90 }; //int [ ] yValues = { 40, 20, 60, 70, 10, 10, 10, 80, 50, 100 }; //int [ ] yValues = { 40, 20, 60, 70, 40, 10 }; int horizontalScale; int yAxis; int highValueIndex = findHighValueIndex( ); int lowValueIndex = findLowValueIndex( ); PFont f1; void setup( ) { size( 500, 300 ); background( 0, 0, 255); yAxis = 200; f1 = loadFont("f1.vlw"); textFont( f1 ); fill( 255 ); text( "Total rise of the graph is " + sumRise( ) , width*.1, height*.9); text( "Total fall of the graph is " + sumFall( ) , width*.5, height*.9); horizontalScale = (width-20)/yValues.length; plotPoints( ); drawHighMarker( ); drawLowMarker( ); drawLines( ); drawBall( ); } void plotPoints( ) { stroke(#FF0000); line(0, yAxis, width, yAxis); strokeWeight(4); stroke(#FFFFFF); for(int i = 0; i < yValues.length; i++) { point((i+1)*horizontalScale, yAxis - yValues[i]); } for(int i = 0; i < yValues.length; i++) { text(yValues[i], ((i+1)*horizontalScale)-7, (yAxis - yValues[i])+20); } } void drawLines( ) { stroke(#FF0000); for(int i = 0; i < yValues.length-1; i++) { line((i+1)*horizontalScale, yAxis - yValues[i], (i+2)*horizontalScale, yAxis - yValues[i+1]); } } int findHighValueIndex( ) { int highIndex = 0; for(int i = 1 ; i < yValues.length ; i++ ) { if ( yValues[i] > yValues [highIndex] ) { highIndex = i; } } return highIndex; } int findLowValueIndex( ) { int lowIndex = 0; for(int i = 1 ; i < yValues.length ; i++ ) { if ( yValues[i] < yValues [lowIndex] ) { lowIndex = i; } } return lowIndex; } void drawHighMarker( ) { for( int i = 0 ; i < yValues.length ; i++ ) { if (yValues[i] == yValues[highValueIndex]) { stroke(255); strokeWeight(1); line((i+1)*horizontalScale, yAxis - yValues[i], (i+1)*horizontalScale, yAxis - yValues[i] - 20); fill(#0DFF0E); triangle((i+1)*horizontalScale, yAxis - yValues[i] - 20, (i+1)*horizontalScale, yAxis - yValues[i] - 40, (i+1)*horizontalScale + 10, yAxis - yValues[i] - 30); break; } } } void drawLowMarker( ) { for( int i = 0 ; i < yValues.length ; i++ ) { if(yValues[i] == yValues[lowValueIndex]) { stroke(255); strokeWeight(1); line((i+1)*horizontalScale, yAxis - yValues[i], (i+1)*horizontalScale, yAxis - yValues[i] - 20); fill(#FF0000); triangle((i+1)*horizontalScale, yAxis - yValues[i] - 20, (i+1)*horizontalScale, yAxis - yValues[i] - 40, (i+1)*horizontalScale + 10, yAxis - yValues[i] - 30); break; } } } void drawBall( ) { for( int i = 1 ; i < yValues.length-1 ; i++ ) { if( yValues[i] == yValues[i+1]) { stroke(255); strokeWeight(1); fill(#FFF700); ellipse((i+1)*horizontalScale+(horizontalScale/2), yAxis - yValues[i] - 5, 10, 10); } } } int sumRise( ) { int sum = 0; for(int i = 0 ; i < yValues.length-1 ; i++ ) { if ( yValues[i] < yValues [i+1] ) { sum = sum + (yValues[i+1] - yValues[i]); } } return sum; } int sumFall( ) { int sum = 0; for(int i = 0 ; i < yValues.length-1 ; i++ ) { if ( yValues[i] > yValues [i+1] ) { sum = sum + (yValues[i] - yValues[i+1]); } } return sum; }