Take the 2-minute tour ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

I was writing a java program to draw an arc. Arc2D.Double(int x,int y,int width,int height,int startAngle,int arcAngle,int type);

Since, I'm not familiar with the mathematics behind drawing arc, I'm facing the problem. Basically, what I want to is...I want to draw an arc between two points A and B. I want to draw an arc between the two lines depicting the angle between them. Some body please help me in calculating the startAngle and arcAngle.

Please help me out. Thanks in advance.

Well, I found the answer to my scenario here...

Since, I don't have enough reputation to answer I'm writing it here....

Lets say that the center of the circle is (x0, y0) and that the arc contains your two points (x1, y1) and (x2, y2). Then the radius is: r=sqrt((x1-x0)(x1-x0) + (y1-y0)(y1-y0)). So:

int r = (int)Math.sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0));
int x = x0-r;
int y = y0-r;
int width = 2*r;
int height = 2*r;
int startAngle = (int) (180/Math.PI*atan2(y1-y0, x1-x0));
int endAngle = (int) (180/Math.PI*atan2(y2-y0, x2-x0));
graphics.drawArc(x, y, width, height, startAngle, endAngle);

Thanks & Regards

share|improve this question
    
You mention $x$ and $y$ coordinates as well as a width, a height, an startAngle an arcAngle and a type as input. What do they represent? And what is the angle between two points $A$ and $B$? Do you mean “with respect to the origin”, i.e. you draw a line through $A$ and the origin $(0,0)$ and a line through $B$ and the origin and that’s the angle? –  k.stm May 13 '13 at 10:44
    
I want to draw an arc at the corner of two intersecting lines.Type represents CHORD,OPEN,PIE types.x and y represents the top left corner of the bounding rectangle of the arc shape. –  pinkpanther May 13 '13 at 10:56
    
Intersection between two lines (corner) is the origin.... –  pinkpanther May 13 '13 at 11:07
    
Maybe this can help you. In your case, $θ = \arccos \big(\tfrac{a}{\sqrt{a^2 + b^2}}\big)$ gives you the angle $θ$ of the point $(a,b)$ to the (right ray of the) horizontal axis. –  k.stm May 13 '13 at 11:19
    
@K.Stm Thanks for your help.Well, I found the answer to my scenario here stackoverflow.com/questions/4196749/… –  pinkpanther May 13 '13 at 12:44
show 3 more comments

1 Answer 1

up vote 0 down vote accepted

Well, I can answer it now I found the answer...here

Lets say that the center of the circle is (x0, y0) and that the arc contains your two points (x1, y1) and (x2, y2). Then the radius is: r=sqrt((x1-x0)(x1-x0) + (y1-y0)(y1-y0)). So:

int r = (int)Math.sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0));
int x = x0-r;
int y = y0-r;
int width = 2*r;
int height = 2*r;
int startAngle = (int) (180/Math.PI*atan2(y1-y0, x1-x0));
int endAngle = (int) (180/Math.PI*atan2(y2-y0, x2-x0));
graphics.drawArc(x, y, width, height, startAngle, endAngle);
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.