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
posted
0
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
posted
0
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
posted
0
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
posted
0
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
posted
0
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.
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
posted
0
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.