2
$\begingroup$

A math challenge had the following statement: [[OVERLAP -Three identical rectangular frames are placed one on top of the other, as Shown (A frame on the left tilted over the center frame and symmetrically a frame on the right tilted over the center frame). The result of their intersections is seven regions. Can you work out a way to obtain twenty-five regions from the intersection of the same overlapping rectangles?]] I made a sketch, in an attempt to illustrate the situation, to see if I could identify the seven intersection regions, in order to try to solve the problem. The help I am requesting is on the possibility of a code that allows the identification of the seven regions.

(* Defining line 1 *)line1 = Line[{{-1, -4}, {10, 7}}];(* Defining line 2 *)line2 = Line[{{-1, 12}, {14, -3}}];

(* Defining the first rectangle *)point1 = {3, 0}; (* vertex on the line x = 0 *)point2 = point1 + {4, 4}; (* vertex along the line x *)point3 = point2 + {-2, 1}; (* vertex along the line y = x - 3 *)point4 = point1 + {-2, 1}; (* vertex along the line y = x - 3 *)rectangle1 = {EdgeForm[Thick], FaceForm[Yellow], 
  Polygon[{point1, point2, point3, point4}]};

(* Defining the second rectangle *)point5 = {5, 0}; (* vertex on the line x = 0 *)point6 = point5 + {3, 0}; (* vertex along the line x *)point7 = point6 + {0, 4}; (* vertex along the line y = x - 3 *)point8 = point5 + {0, 4}; (* vertex along the line y = x - 3 *)rectangle2 = {EdgeForm[Thick], FaceForm[Red], 
  Polygon[{point5, point6, point7, point8}]};

(* Defining the third rectangle *)point9 = {14, 1}; (* vertex on the line x = 0 *)point10 = point9 + {-3, -1}; (* vertex along the line y = -x +11 *)point11 = point10 + {-4, 4}; (* vertex along the line y = -x + 11 *)point12 = point9 + {-4, 4}; (* vertex on the line x = 0 *)rectangle3 = {EdgeForm[Thick], FaceForm[Green], 
     Polygon[{point9, point10, point11, point12}]};

(* Creating the plot *)g = Graphics[{line1, line2, rectangle1, rectangle2, rectangle3},   Axes -> True, 
  PlotRange -> {{-1, 15}, {-1, 6}}];(* Displaying the plot *)Show[g]
$\endgroup$

1 Answer 1

2
$\begingroup$
  • We can rotate the the middle rectangle around its center with small degree.
t = 18 Degree;
{a, b} = {4, 5};
rect = Rectangle[{0, 0}, {a, b}];
Graphics[{FaceForm[], EdgeForm[Blue], rect, 
  GeometricTransformation[rect, RotationTransform[t, {a, b}/2]], 
  GeometricTransformation[rect, RotationTransform[-t, {a, b}/2]]}]

enter image description here

Clear["Global`*"];
t = 18  Degree;
{a, b} = {4, 5};
rect0 = Rectangle[{0, 0}, {a, b}];
rect1 = RotationTransform[t, {a, b}/2]@rect0;
rect2 = RotationTransform[-t, {a, b}/2]@rect0;
lines = MeshPrimitives[#, 1] & /@ {rect0, rect1, rect2};
reg = DiscretizeGraphics /@ lines // RegionUnion;
g = Graph[MeshPrimitives[reg, 1] /. Line -> Apply@UndirectedEdge, 
   VertexCoordinates -> MeshCoordinates[reg]];
faces = PlanarFaceList[g];
faces = Select[faces, WindingCount[Line@#, Mean@#] == 1 &];
GraphicsRow[{Graphics@lines, 
  Graphics[{{EdgeForm[White], FaceForm[RandomColor[]], Polygon@#} & /@
      faces}]}]
faces // Length

25.

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.