Solved

How to find coordinates of intersection of a line and a circle

Posted on 2004-10-14
9
5,802 Views
Last Modified: 2008-01-09
Hello experts,

I have a circle plotted in x,y coordinates.  The center is at (14,5) with a radius of 5.

I have a point (*) at (16,6).  I need a formula to determine the x,y coordinates where
a line intersects the circle (at ? below) if drawn from the center of the circle through the point *.

y
|                    
|             .
|         .      ?.
|               *    
|       .     @     .
|
|         .       .
|             .
|
+-------------------------x

The coordinates I gave are just an example, I need a formula to solve any center, radius and * point.

BTW: This is not a homework problem. If I had paid more attention in geometry though I would
proabably know how to do this.   This is not really a Java problem but I didn't know the
best forum to post it in.
0
Comment
Question by:kselvia
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
  • 2
  • +1
9 Comments
 
LVL 92

Assisted Solution

by:objects
objects earned 250 total points
ID: 12314433
0
 
LVL 12

Author Comment

by:kselvia
ID: 12314848
I saw that (and had actually already looked at it) and the answer is probably there someplace but I need it spelled out.

Given the data I have:  The center point, another point inside the circle, where will a line drawn from the center throug the point cross the circle.
0
 
LVL 92

Expert Comment

by:objects
ID: 12315881
the equation is given on that page, which part is giving you problems?
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 12

Author Comment

by:kselvia
ID: 12315895
The part where I find the equation on the page.
0
 
LVL 92

Expert Comment

by:objects
ID: 12315980
"gives the points of intersection as ..."
http://mathworld.wolfram.com/c1img3452.gif
0
 
LVL 37

Accepted Solution

by:
zzynx earned 250 total points
ID: 12316528
x1 = 14, y1 = 5
x2 = 16, y2 = 6

dx = 2
dy = 1
dr =  2.236

D = 14*6-16*5 = 4
0
 
LVL 12

Author Comment

by:kselvia
ID: 12317526
Yes I understand now. Thank you both very much.
0
 
LVL 21

Expert Comment

by:MogalManic
ID: 12317590
Something like this?

class Circle
{

...
/**
 * Find the intersection of this circle with the line defined by point p1 & p2
public Point Intersect(Point p1, Point p2)
{
   int dx=p2a.x-p1.x;
   int dy=p2.y-p1.y;
   int dr=Math.sqrt(dx*dx+dy*dy);
   int D=p1.x*p2.y-p2.x*p1.y;
   int discriminant=this.radius*this.radius*dr*dr-D*D;
   if (discriminant<0)
      return null;  //No intersection;
   else if (discriminant==0)
      ;//Tangant line there is only ONE intersection
    else if (discriminant>0)
      ;//The line intersects at TWO points

   //Compute intersection for ONE point (to compute intersection at OTHER point change + to a -)
   int x=(D*dy+Math.sgn(dy)*dx*Math.sqrt(discriminant))/(dr*dr);
   int y=(-D*dx+Math.abs(dy)*Math.sqrt(discriminant))/(dr*dr);
   return new Point(x,y);
}
0
 
LVL 37

Expert Comment

by:zzynx
ID: 12317614
Thanks for accepting
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Why my table column Id is not passed to java object? 4 46
tomcat administrtor 12 68
check java version using powershell 13 292
Java 8 to Java 6 8 32
Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question