# Can someone help me understand this code for generating fractal?

• 06-19-2012, 11:44 PM
Eretaia
Can someone help me understand this code for generating fractal?
Hello everyone.

I'm trying to understand how this specific Koch curve works through java but I'm quite a beginner to understand some parts of the code. Here is an example I'd like to analyze (not written by me, of course, found it on the internet). I'm studying applied math in informatics and I've just begun learning java, so I'm really interested in this but in the same time kind of lost. Some parts of the code are already commented, but I'd appreciate if some of you could comment the most important parts or at least explain to me in some other way how this specific works. Thanks a lot.

Code:

```import java.awt.*; import java.awt.event.*; public class Koch extends Frame {  public static void main(String[] args){new Koch();}   Koch()   {  super("Koch. Click the mouse button to increase the level");       addWindowListener(new WindowAdapter()         {public void windowClosing(                 WindowEvent e){System.exit(0);}});       setSize (600, 500);       add("Center", new CvKoch());       show();     } }   class CvKoch extends Canvas {  public float x, y;   double dir;   int midX, midY, level = 1;     int iX(float x){return Math.round(midX+x);}   int iY(float y){return Math.round(midY-y);}     CvKoch()   {  addMouseListener(new MouseAdapter()       {  public void mousePressed(MouseEvent evt)         {  level++; // each mouse click increases the level             repaint();         }       });   }   public void paint(Graphics g)   {  Dimension d = getSize();       int maxX = d.width - 1, maxY = d.height - 1,           length=3* maxX / 4;       midX = maxX/2; midY = maxY/2;       x = (float)(-length/2);          // Start point       y = 0;       dir = 0;       drawKoch(g, length, level);   }     public void drawKoch(Graphics g, double len, int n)   {  if (n==0)       {  double dirRad, xInc, yInc;         dirRad = dir * Math.PI/180;         xInc = len * Math.cos(dirRad);    // x increment         yInc = len * Math.sin(dirRad);    // y increment         float x1=x+ (float)xInc,               y1=y+ (float)yInc;         g.drawLine(iX(x), iY(y), iX(x1), iY(y1));         x = x1;         y = y1;         }         else         {  drawKoch(g, len/=3, --n);             dir += 60;             drawKoch(g, len, n);             dir-=120;             drawKoch(g, len, n);             dir += 60;             drawKoch(g, len, n);     }   } }```
• 06-19-2012, 11:52 PM
Fubarable
Re: Can someone help me understand this code for generating fractal?
Quote:

Originally Posted by Eretaia
... but I'd appreciate if some of you could comment the most important parts or at least explain to me in some other way how this specific works.

We're all volunteers here so the brunt of effort should be yours: Better for you to tell us what specifically confuses you rather than have us try to comment "found" code.
• 06-20-2012, 12:17 AM
DarrylBurke
Re: Can someone help me understand this code for generating fractal?
Quote:

No part of this book may be reproduced without the written permission of the publisher.
Do you have that permission?

If you don't reply within a few hours, this thread will be deleted.

db
• 06-20-2012, 12:52 AM
Eretaia
Re: Can someone help me understand this code for generating fractal?
Quote:

Originally Posted by Fubarable
We're all volunteers here so the brunt of effort should be yours: Better for you to tell us what specifically confuses you rather than have us try to comment "found" code.

I apologize. I understand the mathematical part, but my scarce knowledge of the java and its syntax is what confuses me on several places. For example, what do these parts mean?

Code:

```  int iX(float x){return Math.round(midX+x);}   int iY(float y){return Math.round(midY-y);}```
Thank you for your willingness to help though.

Quote:

Originally Posted by DarrylBurke
Do you have that permission?

If you don't reply within a few hours, this thread will be deleted.

db

The code is from Computer Graphics for Java Programmers and all the project files can be downloaded freely from the publisher's website and no warning was issued. This code is actually quoted on many websites as an example for a functional Koch curve. However, if it's breaking the rules, feel free to delete it.
• 06-20-2012, 02:59 AM
Norm
Re: Can someone help me understand this code for generating fractal?
Those statements look like the definitions for two methods. Normally they are coded like this:
Code:

```  int iX(float x){     return Math.round(midX+x);   }```
The method takes a float arg and returns an int value.
• 06-20-2012, 10:13 AM
DarrylBurke
Re: Can someone help me understand this code for generating fractal?
Quote:

Originally Posted by Eretaia
The code is from Computer Graphics for Java Programmers and all the project files can be downloaded freely from the publisher's website and no warning was issued. This code is actually quoted on many websites as an example for a functional Koch curve..

1. Always credit the source when posting copied code on a public forum.
Computer Graphics For Java Programmers, 2Nd Ed - Leen Ammeraal & Kang Zhang - Google Books

2. 'many websites'? A Google search for class CvKoch extends Canvas produces 5 results.

db