**1**

# 2D Coordinate Determination: How to determine coordinates from a line intersection?

###
#2
Members - Reputation: **2143**

Posted 04 October 2012 - 06:12 AM

I'm going to guess that you want to compute the point where a solid 2D circle (red) specified by A=(posA, rA) intersects a hollow 2D circle (pink) specified by B=(posB, rB):

1. Project posA to B. That is, compute projB = posB + (posA-posB).Normalized() * rB; 2. Compute the distance of projB to the circle A. distance = (posA - projB).Length(); 3. if (distance < rA) return intersection at point projB; else return no intersection;

If you instead are computing an intersection against a thick 2D "ring" formed by extruding the pink hollow circle by a distance d, do the same as above, but at step 3, do a if (distance < rA + d) instead.

###
#3
Moderators - Reputation: **10028**

Posted 04 October 2012 - 06:14 AM

*Radius*units away from

*Center*in the direction towards

*Ball*? In that case, take the vector from

*Center*to

*Ball*, normalize it, multiply it by

*Radius*and add it to

*Center*.

Intersection = Center + Radius*normalize(Center-Ball)

###
#4
Members - Reputation: **682**

Posted 04 October 2012 - 09:19 AM

Unfortunately, an image lacks formal rigor. What kind of intersection are you computing exactly? You have a 2D solid circle drawn in red, and a curve specified in pink? or a thick curve specified by the black outline? or a thick circle specified by the black area? or a hollow circle specified by the pink area? What is your input data? What is your expected output data?

Ah. I'm sorry for the image's vague description. I'll try answering the questions respective to the questions:

- The intersection where the blue line meets the pink line.
- A 2D solid circle in red is a ball, and a curve in pink is the center line, which is a line consisting of infinite center points of the black outline. The thick curve is the shape of an obstacle. It's not a thick circle, nor a hollow circle which was specified by the pink area.
- The input data for the ball consists of a vector position, vector speed, and vector acceleration. The obstacle (black lines) contains only the vector position of the center and the radius of the pink curve's distance.
- The expected output data would be to retrieve a vector point that is the intersection of the blue line and the pink curve.

I'm going to guess that you want to compute the point where a solid 2D circle (red) specified by A=(posA, rA) intersects a hollow 2D circle (pink) specified by B=(posB, rB):

1. Project posA to B. That is, compute projB = posB + (posA-posB).Normalized() * rB; 2. Compute the distance of projB to the circle A. distance = (posA - projB).Length(); 3. if (distance < rA) return intersection at point projB; else return no intersection;

If you instead are computing an intersection against a thick 2D "ring" formed by extruding the pink hollow circle by a distance d, do the same as above, but at step 3, do a if (distance < rA + d) instead.

I will take heed of your advice. Thanks.