Find a line to cut two squares in half ~ KodeKnight
Given two squares on a two dimensional plane, find a line that would cut these two squares in half.
Read full article from Find a line to cut two squares in half ~ KodeKnight
Given two squares on a two dimensional plane, find a line that would cut these two squares in half.
Solution:
Any Line passing the centers of the two squares will cut them in halves. So, we have to connect the lines between the center of the 2 squares. The straight line that connects the two centers of the two squares will cut both of them into half.public
class
Square {
public
double
left;
public
double
top;
public
double
bottom;
public
double
right;
public
Square(
double
left,
double
top,
double
size) {
this
.left = left;
this
.top = top;
this
.bottom = top + size;
this
.right = left + size;
}
public
Point middle() {
return
new
Point((
this
.left +
this
.right) /
2
,
(
this
.top +
this
.bottom) /
2
);
}
public
Line cut(Square other) {
Point middle_s =
this
.middle();
Point middle_t = other.middle();
if
(middle_s.equals(middle_t)) {
return
new
Line(
new
Point(left, top),
new
Point(right, bottom));
}
else
{
return
new
Line(middle_s, middle_t);
}
}
}