Rectangle intersection

K

kimos

hi all,

how to calculate the intersection of 2 rectangle

a rectangle is the following:

Rectangle makeRectangle (Point lowerLeft, Point upperRight) {

Rectangle r;

r.pt1 = lowerLeft;
r.pt2 = upperRight;
return r;
}

and Point is the following:

Point makePoint(int x, int y) {
Point p;
p.x = x;
p.y = y;
return p;
}


And i want the know how to make:

Rectangle intersection(Rectangle r1, Rectangle r2)

this should return the intersection of the 2 rectangles
anyone can help me plz?
 
J

Joona I Palaste

kimos said:
how to calculate the intersection of 2 rectangle
a rectangle is the following:
Rectangle makeRectangle (Point lowerLeft, Point upperRight) {

Rectangle r;
r.pt1 = lowerLeft;
r.pt2 = upperRight;
return r;
}
and Point is the following:
Point makePoint(int x, int y) {
Point p;
p.x = x;
p.y = y;
return p;
}

And i want the know how to make:
Rectangle intersection(Rectangle r1, Rectangle r2)
this should return the intersection of the 2 rectangles
anyone can help me plz?

Which part are you having trouble with, calculating the intersection's
coordinates or implementing the algorithm as a C program?
 
M

Malcolm

kimos said:
hi all,

how to calculate the intersection of 2 rectangle

a rectangle is the following:

Rectangle makeRectangle (Point lowerLeft, Point upperRight) {

Rectangle r;

r.pt1 = lowerLeft;
r.pt2 = upperRight;
return r;
}

and Point is the following:

Point makePoint(int x, int y) {
Point p;
p.x = x;
p.y = y;
return p;
}


And i want the know how to make:

Rectangle intersection(Rectangle r1, Rectangle r2)

this should return the intersection of the 2 rectangles
anyone can help me plz?

Rectangle intersection(Rectangle r1, Rectangle r2)
{
Find the leftmost and the bottommost rectangle.
Find the rightmost and the topmost rectangle.

If the left x co-ordinate of the non-leftmost rectangle is between the
left and the right of the leftmost rectangle, you have the left cordinate of
your intersection. If it is to the right you have no intersection, and the
rectangles don't overlap. (If it is to the left you didn't calculate the
leftmost rectangle correctly).

Repeat for all the other coordinates (bottom, right, top).
}
 
S

Simon Stienen

kimos said:
hi all,

how to calculate the intersection of 2 rectangle

Take the rightmost left-border, the left-most right border, the bottom-most
top border and the top-most bottom border as borders for your intersection.
If the left border of the intersection is on the right of the right border
ot the top border below the bottom border, there is no intersection.
 
S

SM Ryan

# this should return the intersection of the 2 rectangles
# anyone can help me plz?

Take two pieces of paper, overlay them, and think about you're looking at. Hint:
the intersection is either empty, a point, or a rectangle.
 
X

xarax

SM Ryan said:
# this should return the intersection of the 2 rectangles
# anyone can help me plz?

Take two pieces of paper, overlay them, and think about you're looking at. Hint:
the intersection is either empty, a point, or a rectangle.

Or two points forming a line segment (the
rectangles share some part of a border).
 
D

Derrick Coetzee

kimos said:
how to calculate the intersection of 2 rectangle

The easiest way to think about this problem conceptually is to first
come up with an algorithm for the 1D version, intersecting two line
segments, then generalize it.

Suppose we have a line from a to b and a line from c to d. There are
four cases for intersecting them:

a <= b < c <= d : a----b c----d
In this case the intersection is empty.

a <= b = c <= d : a----b/c----d
In this case the intersection is the single point b=c (the line segment
from b to b.)

a <= c <= b <= d : a---c===b---d
In this case the intersection is the line from c to b.

a <= c <= d <= b : a---c===d---b
In this case the intersection is the line from c to d.

If you simply apply these same four cases to the x and y coordinate
ranges of your rectangles separately, the result will be the x and y
coordinate ranges of the intersection of the rectangles.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top