Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 5844
  • Last Modified:

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

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
Ken Selvia
Asked:
Ken Selvia
  • 3
  • 3
  • 2
  • +1
2 Solutions
 
Ken SelviaRetiredAuthor Commented:
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
 
objectsCommented:
the equation is given on that page, which part is giving you problems?
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
Ken SelviaRetiredAuthor Commented:
The part where I find the equation on the page.
0
 
objectsCommented:
"gives the points of intersection as ..."
http://mathworld.wolfram.com/c1img3452.gif
0
 
zzynxSoftware engineerCommented:
x1 = 14, y1 = 5
x2 = 16, y2 = 6

dx = 2
dy = 1
dr =  2.236

D = 14*6-16*5 = 4
0
 
Ken SelviaRetiredAuthor Commented:
Yes I understand now. Thank you both very much.
0
 
MogalManicCommented:
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
 
zzynxSoftware engineerCommented:
Thanks for accepting
0

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

  • 3
  • 3
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now