3
$\begingroup$

I have seen quite a few problems like this one presented below. The idea is how to determine if it is possible to move a rectangular 3d box through the corner of a hallway knowing the dimensions of all the objects given.

Consider a hallway with width $1.5$ and height $2.5$ which has a corner of $90^\circ$. Determine if a rectangular box of dimensions $4.3\times 0.2\times 0.07$ can be taken on the hallway around the corner.

I know that intuitively, the principle behind this is similar to the 2 dimensional case (illustrated here), but how can I solve this rigorously?

  • 0
    I believe some of the references at the URL I gave earlier deal with the 3-dimensional case, but if one is interested in the 2-dimensional case, try googling (together, but as separate words) "ladder", "corner", and "envelope".2011-07-15

1 Answers 1

4

Here is an attempt based on my experiences with furniture moving. The long dimension a=4.3 will surely be horizontal. One of the short dimensions, call it b will be vertical, the remaining dimension c will be horizontal. The box must be as "short" as possible during the passage at the corner. So, one end of the box will be lifted:

We calculate the projection L = x1 + x2 of the lifted box onto the horizontal plane. Now we move the shortened box around the corner. Here is an algorithm as a Python program (I hope it is readable):

# hallway dimensions: height = 2.5    width  = 1.5  def box(a, b, c):      # a = long dimension of the box = 4.3, horizontal     # b = short dimension, 0.2 (or 0.07), vertical        # c = the other short dimension, horizontal      d = math.sqrt(a*a + b*b)  # diagonal of a x b rectangle     alpha = math.atan(b/a)    # angle of the diagonal in axb rectangle     omega = math.asin(height/d) - alpha          # lifting angle      x1 = b * math.sin(omega)  # projection of b to the floor     x2 = a * math.cos(omega)  # projection of a to the floor     L = x1 + x2               # length of the lifted box projected to the floor     sin45 = math.sin(math.pi/4.0)     y1 = c * sin45           # projection of c to the y axis     y2 = L / 2 * sin45       # projection of L/2 to the y axis     w = y1 + y2              # box needs this width w      ok = (w <= width)        # box passes if its width w is less than the                              # the available hallway width     print "w =", w, ", pass =", ok     return ok  def test():     # 1) try 0.07 as vertical dimension:     box(4.3, 0.07, 0.2) # prints w= 1.407,  pass= True      # 2) try 0.2 as vertical dimension:     box(4.3, 0.2, 0.07) # prints w= 1.365,  pass= True  test() 

So, the box can be transported around the corner either way (either 0.2 or 0.07 vertical).

Adding Latex formulae for the pure mathematician:

$ \begin{align*} d= & \sqrt{a^{2}+b^{2}}\\ \alpha= & \arctan(b/a)\\ \omega= & \arcsin(height/d)-\alpha\\ L= & x_{1}+x_{2}=b\sin\omega+a\cos\omega\\ w= & y_{1}+y_{2}=\frac{c}{\sqrt{2}}+\frac{L}{2\sqrt{2}} \end{align*} $

The box can be transported around the corner if $w \le width$.

  • 0
    Thank you. That was my intuition also.2011-07-16