Sunday, March 30, 2014

Find a line to cut two squares in half


Given two squares on a two dimensional plane, find a line that would cut these two squares in half.


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.

Code in java
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;
 = top;
          this.bottom = top + size;
          this.right = left + size;

   public Point middle() {
          return new Point((this.left + this.right) / 2,
                                       ( + this.bottom) / 2);

   public Line cut(Square other) {
          Point middle_s = this.middle();
          Point middle_t = other.middle();
          if (middle_s == middle_t) {
                 return new Line(new Point(left, top),
                 new Point(right, bottom));
          } else {
                 return new Line(middle_s, middle_t);

Note specific to java  - If == operator between the 2 point objects in cut method. I am not sure if it will work, as == operator in java compares references. So, better approach is Point should implement equals() method and compare the 2 point object like this:

References : 



Post a Comment