Advertisement

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

Started by October 04, 2012 11:47 AM
2 comments, last by tom_mai78101 12 years, 4 months ago
Here's a diagram beautifully depicting the problem.

gCISK.png

Note: The pink line is the purple center line's radius length, not the black outer line's radius.
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?

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.
Advertisement
Do you want the point that is 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)

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:

  1. The intersection where the blue line meets the pink line.
  2. 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.
  3. 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.
  4. 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.

This topic is closed to new replies.

Advertisement