The moose likes Java in General and the fly likes Drawing Whirl Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login
JavaRanch » Java Forums » Java » Java in General
Reply Bookmark "Drawing Whirl" Watch "Drawing Whirl" New topic
Author

Drawing Whirl

Sam Benry
Ranch Hand

Joined: Mar 21, 2008
Posts: 89
I'm using the StdDraw.java and I'm trying to draw something similar to this
http://mathworld.wolfram.com/MiceProblem.html

but I have no idea where to start... The user will input the integer N that will decide the number of sides of the polygon, but I don't know how to draw the polygon according to N...

Can anyone give me tips how to start coding this?
thanks
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 26710
Try a Polygon; you will have to work out the vertices from x = radcosx, y = radsinx, where rad is the radius of the enclosing circle, and x is 1*2*PI/N, 2*2*PI/N, 3*2*PI/N etc.

It is easier if you translate your Graphics2D object � the width of your display to the right and � the height downwards, and maybe also scale by 1.0 in the x direction and -1.0 in the y direction.

Don't know how to draw the spirals. Sorry.
Sam Benry
Ranch Hand

Joined: Mar 21, 2008
Posts: 89
It is easier if you translate your Graphics2D object � the width of your display to the right and � the height downwards, and maybe also scale by 1.0 in the x direction and -1.0 in the y direction.


can you explain this more?
what should I set the scale?
Sam Benry
Ranch Hand

Joined: Mar 21, 2008
Posts: 89
solved it in a way, dont know if its good


then I find the smallest and largest value of x and y
then
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 26710
I don't think your approach will work, I am afraid.

The affine transforms I quoted (be grateful for small mercies, I didn't say to use shear!) simply have the effect of moving the origin to the middle of your displayed Component. Maybe it's a JPanel . . .But all you have achieved is moving the origin to the centre of the JPanel, and inverting the y-axis so + is up and - is down. Now you can work out x and y coordinates the same way you are used to on a piece of paper.

At least I think that's how it works; it si a long time since I tried that sort of drawing!

Now see if you can draw a triangle or a square centred on your JPanel. Then you can think about the spirals.
[ April 15, 2008: Message edited by: Campbell Ritchie ]
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 32767
That's an interesting problem. Don't look if you want to learn how to do it yourself, but I've put up a solution in the CodeBarn. It doesn't use affine transformations, but an iterative approach of calculating a corner point from the previous one. Then it starts a thread that calculates the mouse paths.


Android appsImageJ pluginsJava web charts
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 26710
Ulf, thank you for the solution.

It gives some pretty Moire fringes on my screen at n = 60!
[ April 16, 2008: Message edited by: Campbell Ritchie ]
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 32767
I tinkered a bit more with the code. Now the window is sized appropriately for the number of sides, and the drawing thread is properly terminated before a new one is started.
 
 
subject: Drawing Whirl
 
Threads others viewed
Have I clicked on a polygon?
Drawing a Diamond Shape (like Rectangle, Circle)
Disappearing Graphics on panel
Touching or Intersecting circles
Rotation
WebSphere development made easy
without the weight of IBM tools
http://www.myeclipseide.com