Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

USE!!!!PYTHON!!!! 1. The Levy curves, like the Koch curves, are fractal curves t

ID: 3668752 • Letter: U

Question

USE!!!!PYTHON!!!!

1.     The Levy curves, like the Koch curves, are fractal curves that can be generated recursively.   Write a function levy that produces a code that can be used to draw the nth Levy curve. Each turn should be 45 degrees.   You only need to generate the code, you don’t need to draw the curves (though, if you like, you can use the draw function to do so)

Sample runs:

>>> levy(0)
'F'
>>> levy(1)
'LFRRFL'

>>> levy(2)
'LLFRRFLRRLFRRFLL'

>>> levy(3)

'LLLFRRFLRRLFRRFLLRRLLFRRFLRRLFRRFLLL'

>>>

USE!!!!PYTHON!!!!

Explanation / Answer

/** * Draw the dragon curve by calling the private method of draw * * @param g The graphics context where the drawing will take place */ public void drawDragon(Graphics g){ draw(level,g); } /** * Private and recursive method to draw the Dragon * * @param level The interation of the dragon * @param g The graphic contexts the drawing take place */ private void draw(int level, Graphics g){ int peakXNorth = (int)((center.getX() + ( north.getX()-center.getX())*0.5 -(center.getY()-north.getY())*0.5)); int peakYNorth= (int)((center.getX() - ( north.getX()-center.getX())*0.5 -(center.getY()-north.getY())*0.5)); int peakXSouth = (int)((center.getX() + ( south.getX()-center.getX())*0.5 -(center.getY()-south.getY())*0.5)); int peakYSouth= (int)((center.getX() - ( south.getX()-center.getX())*0.5 -(center.getY()-south.getY())*0.5)); int peakXWest = (int)((center.getX() + ( west.getX()-center.getX())*0.5 -(center.getY()-west.getY())*0.5)); int peakYWest = (int)((center.getX() - ( west.getX()-center.getX())*0.5 -(center.getY()-west.getY())*0.5)); int peakXEast = (int)((center.getX() + ( east.getX()-center.getX())*0.5 -(center.getY()-east.getY())*0.5)); int peakYEast = (int)((center.getX() - ( east.getX()-center.getX())*0.5 -(center.getY()-east.getY())*0.5)); if(level < 0){ throw new IllegalArgumentException(); } // base class if(level == 0){ g.setColor(Color.RED); g.drawLine((int)center.getX(), (int)center.getY(), (int)north.getX(), (int)north.getY()); g.setColor(Color.BLUE); g.drawLine((int)center.getX(), (int)center.getY(), (int)south.getX(), (int)south.getY()); g.setColor(Color.BLACK); g.drawLine((int)center.getX(), (int)center.getY(), (int)west.getX(), (int)west.getY()); g.setColor(Color.GREEN); g.drawLine((int)center.getX(), (int)center.getY(), (int)east.getX(), (int)east.getY()); } // base class if(level == 1){ g.setColor(Color.RED); g.drawLine((int)center.getX(), (int)center.getY(), peakXNorth, peakYNorth); g.drawLine(peakXNorth,peakYNorth, (int)north.getX(), (int)north.getY()); g.setColor(Color.BLUE); g.drawLine((int)center.getX(), (int)center.getY(), peakXSouth, peakYSouth); g.drawLine(peakXSouth,peakYSouth, (int)south.getX(), (int)south.getY()); g.setColor(Color.BLACK); g.drawLine((int)center.getX(), (int)center.getY(), peakXWest, peakYWest); g.drawLine(peakXWest,peakYWest, (int)west.getX(), (int)west.getY()); g.setColor(Color.GREEN); g.drawLine((int)center.getX(), (int)center.getY(), peakXEast, peakYEast); g.drawLine(peakXEast,peakYEast, (int)east.getX(), (int)east.getY()); }else if (level > 1){ draw(level-1,g); } }