Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.
Posted 04 October 2012 - 05:47 AM
Posted 04 October 2012 - 06:12 AM
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;
Posted 04 October 2012 - 06:14 AM
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?
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.
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.
GameDev.net™, the GameDev.net logo, and GDNet™ are trademarks of GameDev.net, LLC.