Date: Wed, 1 Oct 1997 07:09:51 -0500 (CDT) From: Andrew Deren To: "Hargreaves, Shawn" cc: "'djgpp AT delorie DOT com'" Subject: Re: collision detection In-Reply-To: <34327EAC@relay.probe.co.uk> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Precedence: bulk On Wed, 1 Oct 1997, Hargreaves, Shawn wrote: > > Andrew Deren writes: > > Does anyone know how to detect if two rectangles overlap each other at > > some point. Let's say we have something like this: > > The easiest way to solve this is to consider in what cases the rectangles > > would _not_ collide. For the range xa1-xa2 not to overlap with the range > xb1-xb2, it must be either to the left of it or to the right of it (duh > :-) So, > either the rightmost point of the first range must be to the left of the > leftmost > point of the second range, or the leftmost point of the first range must > be > to the right of the rightmost point of the second range. In code: > > ((xa2 < xb1) || (xb1 > xa2)) > > Negate that, and they collide if: > > ((xa2 >= xb1) && (xb1 <= xa2)) > > :-) Repeat for the y coordinates, and you > have > your intersection test... Thanks a lot it works. Would you by any chance also know how to detect a rectangle with a circle. Let's say we have: typedef struct CIR { int x1, int y1; int radius; } CIR; and then do detect in RECT lies in some point in CIR. Any help would be appreciated. > > Shawn Hargreaves. > ,,, (0 0) +-------------oOO----(_)-------------------+ | Andrew Deren | | aderen AT eecs DOT uic DOT edu | | www.eecs.uic.edu/~aderen/ader/main.html | +-------------------------oOO--------------+ || || ooO Ooo