Rectangle inscribed in another rectangle: solutions for all cases.

In summary, Tommaso Russo has provided solutions and Fortran 95 subroutines and programs for finding unknowns in cases where a rectangle is inscribed in another rectangle. These cases involve solving for three of the five quantities involved (2 sides of outer rectangle, 2 sides of inner rectangle, and one of the two complementary angles between them) to compute the remaining two or state that there is no solution. Tommaso's solutions and subroutines are available for public use and can be found in the TXT file attached to his post. He also provides a graphical method and a numerical method for finding the angle and length of the inner rectangle given the outside rectangle size and only one dimension of the inscribed rectangle.
  • #1
Tommaso_Russo
13
0
Ciao to everybody,

I've encountered frequently, in forums and news groups, questions about a rectangle inscribed in another rectangle, but nowhere a general discussion on ways to solve related problems (i.e., given three of the five quantities involved - 2 sides of outer rectangle, 2 sides of inner rectangle, and one of the two complementary angles between them - compute remaining two, or state that the problem has no solution).

Probably the problem is felt too trivial to encourage somebody to afford difficulties - really NOT trivial - that are encountered in some of these cases.

I did it, and attach below my solutions and some Fortran 95 subroutines and programs that allow for finding unknowns in each case - or for stating that the problem, with input data given, has no solution.

I attach them as text files because proper formatting is relevant for text and essential to code.
(Note: endlines unix style - under Windows use Notepad2 or Scite, not Notepad.)

Hope this will help somebody in future.

Of course, observations, corrections, and suggestions for improvements, are welcome.

Code has been written by myself and I release it in the public domain.


june 2011
Tommaso Russo, Trieste(Italy)


Rectangle inscribed in another rectangle: solutions for all cases.
==================================================================

View attachment InscribedRectangles-discussion.txt

Appendix
========
Subroutines and test programs (Fortran 95):
-------------------------------------------

View attachment InscribedRectangles-fortran95code.txt

--
TRu-TS
 
Mathematics news on Phys.org
  • #2
So after reading through the three cases mentioned in the TXT file posted, I am interested in the hardest one of course, which is case 3: Given A,B,Y, find X (and phi).

In the summary, i get lost as to how Phi is obtained. I am actually desparate to know the answer to the initial question: If given the outside rectangle size, and only one dimension of the inscribed rectangle, how do I get the angle (first) and length of the inner rectangle (which would come easily after finding the angle)?
 
  • #3
again here is the picture used throughout the discusion
 

Attachments

  • Rectangle.jpg
    Rectangle.jpg
    11.5 KB · Views: 968
  • #4
robertg said:
If given the outside rectangle size [X*Y], and only one dimension of the inscribed rectangle [W], how do I get the angle (first) and length of the inner rectangle (which would come easily after finding the angle)?
I get a quartic in terms of X/W, Y/W for the tan of the angle. What do you get?
 
  • #5
robertg said:
So after reading through the three cases mentioned in the TXT file posted, I am interested in the hardest one of course, which is case 3: Given A,B,Y, find X (and phi).
In the summary, i get lost as to how Phi is obtained.
I guess that one thing you have not grasped is that, given A,B,Y, the solution for phi is not necessarily unique. You can obtain one to three values for phi that allow you constructing a rectangle XY thath turns out to be perfectly inscribed into AB. Of course, to each value found for phi corresponds a value for X, and all you have to do is to choose the value of phi for which X is maximum.

robertg said:
I am actually desparate to know the answer to the initial question:
Don't suicide, you got it! :-)

robertg said:
If given the outside rectangle size, and only one dimension of the inscribed rectangle, how do I get the angle (first) and length of the inner rectangle (which would come easily after finding the angle)?
The graphical method described in 3a) does exactly this: giving to gnuplot the following sequence of commands,
Code:
  A = 1        # replace with your input value
  Y = .8       # replace with your input value
  Binput = 1   # replace with your input value
  phi(x)=x     # phi = x, i.e. x-axis *is* angle phi
  X(x) = (A-Y*cos(phi(x)))/sin(phi(x))
  B(x) = Y*sin(phi(x)) + X(x)*cos(phi(x))
  a1(x)= Y*cos(phi(x))
  b1(x) = Y*sin(phi(x))
  set angles degrees
  set xrange [0:90]    # phi must be acute
  set yrange [0:2*Binput]
  set samples 10000    # enough for a good resolution, 
      #  low enough to make zooms in less than 1 second
  plot B(x), Binput, X(x), a1(x), b1(x)
you find one to three good values for phi (that here is x, on x axis), simply looking at intersections between B(x) and Binput(x): you can read them with precision of some digits, zooming in a narrow rectangle around intersection points. For each found value of phi, the corresponding value of X stays on the curve X(x). Choose the best value for phi, that corresponds to largest X.

For a better precision, you can use fortran subroutine find_angles_numerically (described in method 3c) that finds intersection points of the same graph by bisection (output variable ns contains number of found solutions), and then compute corresponding values for X as (A - Y*cos(phi)) / sin(phi).


Using method 3b, instead, you find first X with routine find_max_X_side_analytically, that solves a quartic equation that returns four complex values, and chooses the largest of the real positive ones. As a byproduct, a1 is also obtained , and phi is computed as arcos(a1/Y).


robertg said:
again here is the picture used throughout the discusion

I used a similar one, but unfortunately, we have both used X and Y with a different meaning, and numbered differently segments that make up the sides. Correspondences are:

your X → my A
Y → B
x1 → a1
x2 → a2
y2 → b1
y1 → b2
w → X
h → Y
theta → 90°-phi
 
Last edited:
  • #6
The problem is me. I am just a guy in the shop making various size panels that has a cross strap from corner to corner. I was trying to detail in Autocad the length of the strap for production purposes. That said, I guess it is obviuos that I am not a math major.

Is it possible to input the formula(s) into Excel? If I can get that far, I can use a LISP routine in Autocad to pop in the strap.
 
  • #7
robertg said:
The problem is me. I am just a guy in the shop making various size panels that has a cross strap from corner to corner. I was trying to detail in Autocad the length of the strap for production purposes. That said, I guess it is obviuos that I am not a math major.

No problem. You can use Pythagorean Theorem without knowing any of its many proofs.

What you need is exactly subroutine find_angles_numerically; and other subroutines it calls. In short, all fortran subprograms written for case 3c).

find_angles_numerically(A,Binput,Y, phiout,ns), accepts in input A,B,Y and returns ns (= number of solutions, 1 to 4) and a vector phiout containing solutions for phi (warning: in radians, not degrees.)

So, you have no more a mathematical problem, just a technical one: how to use some fortran 95 subprogram for your purpose?
robertg said:
Is it possible to input the formula(s) into Excel? If I can get that far, I can use a LISP routine in Autocad to pop in the strap.

Unfortunately find_angles_numerically is not a simple formula, but an iterative algorithm that finds solutions by closer and closer approximations. I don't know if Excel programming language is powerful enough to translate into it a fortran subprogram: may be. LISP for sure is.

However, translations into another language generally is not a good idea. find_angles_numerically, and functions it calls, have been proved for correctness, and tested thorougly to catch possible typos. In translating it, it is easy to introduce subtle bugs. If you choose this way, I suggest you to use some tool for automatic translation, like this:
http://www.nhplace.com/kent/Papers/Fortran-to-Lisp.html
(Don't ask me where to download such a program, I don't know, and beware: translated programs usually require some hand made adjustment.)

But, if you can call a LISP routine from Autocad, 99% you can also call a LISP routine that in turn calls a fortran subprogram, acting as a "wrapper". Probably this is the easiest, safest and fastest way. Probably you'll need some assistance from a skilled programmer knowing your programming environment, to join together LISP and fortran programs, but this has to be done once forever.

Good luck
 
Last edited:
  • #8
robertg said:
I am just a guy in the shop making various size panels that has a cross strap from corner to corner.
Then a quartic equation probably doesn't help you either. Fwiw, it's
(X-Yt)2(1+t2) = W2(1-t2)2
where X and Y are the dimensions of the outer rectangle, W is one side of the inner rectangle and t is tan(phi).
(I'm intrigued that Tommaso says there are three solutions for phi. From a quartic you'd expect four. Maybe I've missed a cancellation.)
 
  • #9
haruspex said:
(I'm intrigued that Tommaso says there are three solutions for phi. From a quartic you'd expect four. Maybe I've missed a cancellation.)

It's simple: the fourth solution for phi is always out of the allowed range 0°-90°, and corresponds to a negative side for the inner rectangle.

If you give to gnuplot the command sequence given above, but replacing set xrange [0:90] with set xrange [-360:360], you'll understand immediately why (when the given side of the inner rectangle is less than at least one side of the outer one, i.e. the problem is solvable) phi has always at least two real solutions (one between 0° and 90° and the other between 180° and 270°). For what concerns the remaining two, they can be complex conjugate, real and coinciding, real and distinct, depending on the height of the local maximum of B(phi) between 0° and 90°. (Look at curve B(x) on the plot and its intersections with the straight line Binput.)

Addendum

More precisely (I've just realized that) if phi1 is the first solution and X1 is the corresponding side for inner rectangle, then phi4 = phi1 + 180°, and X4 = -X1. Algebraically, phi4 and X4 are solutions, but geometrically they have the same meaning of phi1 and X1.
 
Last edited:
  • #10
Tommaso_Russo said:
It's simple: the fourth solution for phi is always out of the allowed range 0°-90°, and corresponds to a negative side for the inner rectangle.

If you give to gnuplot the command sequence given above, but replacing set xrange [0:90] with set xrange [-360:360], you'll understand immediately why (when the given side of the inner rectangle is less than at least one side of the outer one, i.e. the problem is solvable) phi has always at least two real solutions (one between 0° and 90° and the other between 180° and 270°). For what concerns the remaining two, they can be complex conjugate, real and coinciding, real and distinct, depending on the height of the local maximum of B(phi) between 0° and 90°. (Look at curve B(x) on the plot and its intersections with the straight line Binput.)

Addendum

More precisely (I've just realized that) if phi1 is the first solution and X1 is the corresponding side for inner rectangle, then phi4 = phi1 + 180°, and X4 = -X1. Algebraically, phi4 and X4 are solutions, but geometrically they have the same meaning of phi1 and X1.
Yes, sorry, it doesn't surprise me that some of the four solutions are either invalid or reversed sign; what surprised me was that it would be only one of the four rather than a pair.
 
  • #11
haruspex said:
Yes, sorry, it doesn't surprise me that some of the four solutions are either invalid or reversed sign; what surprised me was that it would be only one of the four rather than a pair.

Ah, OK. I understand well your surprise, because I too wondered why phi2+180° and phi3+180° are not solutions with a reverse sign for a side of inner rectangle: if real, Phi2 and phi3 are true solutions, I give an example below. phi2+180° and phi3+180° are solutions of same equations, if you revert the sign of one side of outer rectangle :-)

Example:
if outer rectangle is a square of side 1, and you want inscribe in it a rectangle with one side 0.8, you can draw two 0.8 segments orthogonal to a diagonal of outer square (and the second inner side turns out to be 0.6142...) but also insert in it an 0.8 × 0.8 square and rotate it clockwise or counterclockwise until its vertexes touch outer sides. Solutions for phi are truly 3: decreasing the given inner side, they get closer and closer until they fuse in a solution of multiplicity 3 for sqrt(1/2) (B(phi) has there a flex at 45°).
 
  • #12
You should be able to solve this using excel. In particular the Goal seek functionality should be able to solve this by only entering simple formulas for how the relationships that sides and angles have.
 
  • #13
Finally found a case where all four solutions are meaningful: W = 9, X = 10, Y = 11.
The four solutions for the angle are near 6 degrees, 44 degrees, 61 degrees and 69 degrees.
 
  • #14
haruspex said:
Finally found a case where all four solutions are meaningful: W = 9, X = 10, Y = 11.
The four solutions for the angle are near 6 degrees, 44 degrees, 61 degrees and 69 degrees.

Sorry, but near 44° there is no geometrically valid solution. I suppose you have found 43.767° as arctan of one of the solutions of your quartic in t. But that solution for t is also tan(180°+43.767°), and is that value that solves original equations, but with a negative value for the inner unknown side. Remember that I use A,B for sides of outer rectangle, and X,Y for sides of the inner one: for phi=43.767° there in no value of the inner unknown side X that can fit in original equations. In facts,

10 = 9 cos(43.767°) + X sin(43.767°)
gives X = 5.061, while

11 = 9 sin(43.767°) + X cos(43.767°)
gives X = 6.611.

Assuming that outer sides were interchanged above,

11 = 9 cos(43.767°) + X sin(43.767°)
gives X = 6.506, while

10 = 9 sin(43.767°) + X cos(43.767°)
gives X = 5.227.

I say that geometrically meaningful solution can be at most three because I proven it: proof is on last page of the text I attached to my first post:

https://www.physicsforums.com/attachment.php?attachmentid=36642

However, the proof can be grasped intuitively, at least in case Y ≤ A ( or Y ≤ B, interchanging outer sides) looking at the following picture:

attachment.php?attachmentid=50203&stc=1&d=1345989953.png


Given a (semi)infinite rectangle of base A, we can insert in it the given side Y so that its endpoins fall on A and one of the two half-lines (no matter which, for symmetry). For example, at positions Y1 and Y2. To each position corresponds a different angle phi between A and Y, that varies obviously between 0° an 90°, and, if phi is not 0, drawing obvious orthogonal lines (dashed in the picture), we can build the only inner and outer rectangles that could be inscribed, the former in the latter, with the given phi. The value needed for B is the distance from A of the farthest inner vertex (in the example, B1 and B2).

Of course, for phi→0, B(phi) tends to infinity, B(90°) = Y, and for phi→90 B tends to Y+ (from right:. i.e., B(90°-dphi) - B(90°) > 0).

This is enough to state that, in its graph, every horizontal line B=constant (= Brequested) intersects it in an even number of points (counting their multiplicity). This number cannot be 5, otherwise we would have a quartic with 5 solutions or more.

(And, of course, I was wrong when I said in an addendum "I realized that, if phi1 is the first solution ..., then phi4 = phi1 + 180°". This holds true only if A and B are interchangeable, i.e. outer rectangle is a square.)
 

Attachments

  • VaringPhi.png
    VaringPhi.png
    17.1 KB · Views: 1,020
Last edited:
  • #15
Ah, ok. Thanks.
 

1. What is a rectangle inscribed in another rectangle?

A rectangle inscribed in another rectangle is a smaller rectangle that is completely enclosed within a larger rectangle. This means that all four vertices of the smaller rectangle touch the sides of the larger rectangle.

2. What are the different cases for a rectangle inscribed in another rectangle?

There are four possible cases for a rectangle inscribed in another rectangle: the smaller rectangle can be oriented horizontally or vertically, and it can be positioned in the center or in one of the corners of the larger rectangle.

3. What is the formula for finding the area of a rectangle inscribed in another rectangle?

The formula for finding the area of a rectangle inscribed in another rectangle is A = (w * h) / 2, where w is the width and h is the height of the larger rectangle. This formula works for all four cases.

4. Can a rectangle be inscribed in another rectangle if they have the same dimensions?

No, a rectangle cannot be inscribed in another rectangle if they have the same dimensions. In order for a rectangle to be inscribed, it must be smaller than the larger rectangle.

5. Are there any practical applications for understanding rectangle inscribed in another rectangle?

Yes, understanding rectangle inscribed in another rectangle can be useful in various fields such as architecture, engineering, and mathematics. It can also be used in problem-solving and geometry puzzles.

Similar threads

  • Engineering and Comp Sci Homework Help
Replies
2
Views
2K
  • Programming and Computer Science
Replies
1
Views
3K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
12
Views
1K
  • STEM Academic Advising
Replies
13
Views
2K
  • General Discussion
Replies
12
Views
5K
  • Programming and Computer Science
Replies
4
Views
15K
Back
Top