<< Chapter < Page | Chapter >> Page > |
/*File Circle01 Copyright 2016 R.G.Baldwin
********************************************************************/import java.awt.Color;
public class Circle01{//Driver classpublic static void main(String[] args){Circle01Runner obj = new Circle01Runner();
obj.run();}//end main
}//end class Circle01//=================================================================//
class Circle01Runner{//Instantiate the World and Turtle objects.
private World world = new World(300,300);private Turtle turtle = new Turtle(0,0,world);
//----------------------------------------------------//public void run(){
//Make the turtle invisibleturtle.hide();
//Prepare the penturtle.setPenColor(Color.RED);
turtle.setPenWidth(4);//Draw the axes in REDturtle.penUp();
turtle.moveTo(world.getWidth()/2,0);turtle.penDown();
turtle.moveTo(world.getWidth()/2,world.getHeight());turtle.penUp();
turtle.moveTo(world.getWidth(),world.getHeight()/2);turtle.penDown();
turtle.moveTo(0,world.getHeight()/2);turtle.penUp();
turtle.moveTo(0,0);//Prepare the variablesdouble xOff = -0.2;//offset relative to 1.0
double yOff = -0.2;double xScale = 1.0*world.getWidth()/2;
double yScale = 1.0*world.getHeight()/2;double rVal = 0.6;//radius relative to 1.0
double yVal = 0;int row = 0;
int col = 0;double xVal = -rVal;
double xInc = 2*rVal/100;turtle.setPenColor(Color.BLUE);
//Draw half the circle in BLUE.for(int cnt=0; cnt<=100;cnt++,xVal += xInc){
//Get a y-value for the given x-value.yVal = function(rVal,xVal);
//Apply the offsets and scale the resultscol = (int)((xOff+xVal)*xScale);
row = (int)((yOff+yVal)*yScale);//Move to the first point without drawing a line because the// pen is not down. Translate the origin to the center in the
// process.turtle.moveTo(col + world.getWidth()/2,
row + world.getHeight()/2);//Lower the pen in order to draw a line from each point to the
// next point.turtle.penDown();
}//end for loop//Draw other half of the circle in greenturtle.setPenColor(Color.GREEN);
turtle.penUp();xVal = -rVal;
for(int cnt=0; cnt<=100;cnt++,xVal += xInc){
//Get a y-value for the given x-value.yVal = function(rVal,xVal);
//Apply the offsets and scale the results. Note the application// of a negative sign to yVal.
col = (int)((xOff+xVal)*xScale);row = (int)((yOff-yVal)*yScale);
//Move to the first point without drawing a line because the// pen is not down. Translate the origin to the center in the
// process.turtle.moveTo(col + world.getWidth()/2,
row + world.getHeight()/2);//Lower the pen in order to draw a line from each point to the
// next point.turtle.penDown();
}//end for loop}//end run method
//---------------------------------------------------------------////This method evaluates and returns the y-value for each x-value// for a circle with no offset centered at the origin.
// radius*radius = x*x + y*y//Note that the value returned from the sqrt method can be
// considered to be either positive or negative. Only the positive// value is returned.
double function(double rVal,double xVal){//Add a small positive fudge factor to prevent the value inside
// the radical from going negative due to small computational// errors when the radius and the xVal should be equal.
double yVal = Math.sqrt(rVal*rVal - xVal*xVal + 0.0000000001);return yVal;
}//end function//---------------------------------------------------------------//}//end class Circle01Runner
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?