Develop a strong foundation and understanding of web design by learning HTML, CSS, and additional tools to help you develop your own website.

When using drawArc or drawOval, is there a method that gives all points of that arc or oval?

Do more with

EXPERT OFFICE^{®} is a registered trademark of EXPERTS EXCHANGE^{®}

What do you want to achieve? Maybe there is a easy solution, but therefore we need to know what you want to achieve. :-)

Mark

double perc = 0.25; //value between 0 and 1

int ox = (int) origin.getX();

int oy = (int) origin.getY();

int px = (int) Math.floor(Math.sin(perc * 2 * Math.PI) * radius);

int py = (int) Math.floor(Math.cos(perc * 2 * Math.PI) * radius);

g.drawOval(ox-radius, oy-radius, radius*2, radius*2);

g.drawLine(ox, oy, ox+px, oy+py);

This will draw a circle with a needle pointing to the east. If you change the 0.25 to 0.75 it will point to the West, it works counter-clockwise but it's no problem to change the rotation, maybe you even know how, but if you simply negate the perc variable it will work the other way around.

Mark

If you want to read more about this, search for trigonometry, or take a look at this page:

http://www.clarku.edu/~djoyce/trig/

or in particular:

http://www.clarku.edu/~djoyce/trig/angle.html

Now the code:

//Constants

int xOrigin = 200;

int yOrigin = 200;

int radius = 100;

//Draw meter

g.drawArc( xOrigin - radius, yOrigin - radius, radius * 2, radius * 2, 0, 180 );

g.drawLine( xOrigin - radius, yOrigin, xOrigin + radius, yOrigin );

//Percentage is a value between 0 and 1. If zero, the needle will point to the

//left, if one it will point to the right. If it's 0.5 it will point upwards.

double percentage = i;

int xPercentage = ( int ) Math.round( Math.sin( (-percentage-0.5) * Math.PI ) * radius );

int yPercentage = ( int ) Math.round( Math.cos( (-percentage-0.5) * Math.PI ) * radius );

g.setColor( Color.RED );

g.drawLine( xOrigin, yOrigin, xOrigin + xPercentage, yOrigin + yPercentage );

Good luck,

Mark

## Premium Content

You need an Expert Office subscription to comment.Start Free Trial