When we showed the models in the last build to Lore Schindler (our test teacher of the visually impaired) she liked that the models were hollow and that the students could fill them with water to discover that the volumes of the objects in the set were the same. However, she also wanted to have the students be able to close the models and have them feel the object with its missing side present- in other words, in the case of the cylinder, to have a soup can and not a cup.
She asked for a hinged bottom, but that would have made it harder for the models to be easy to print, without support. So instead we added a lid for each model. This required changing from a vase print to a wall with finite and predictable thickness. In the process, we modified the code to make the interior volume match instead of the exterior volume. This way, you can prove that the volumes match by pouring liquid from one to the other.
The picture shows four geometric shapes that are all the same volume. A cone has one-third the volume of a cylinder of the same base area and height, so the cylinder is one-third as high as a cone with the same base area.
You can prove this to yourself by filling one with water and pouring the water into the other one.
We know from Cavalieri’s Principle that a cone and a pyramid that have the same height and same base area as each other have the same volume. We have also included two pyramids that have the same volume as each other, and which have the same base area as the cone and cylinder.
How did we calculate the area of the pyramid base? The little drawing here reviews the math to analyze the area of the base. Imagine the triangle shown here, which has three sides all of length s and is of an unknown height x. (Note: we will use a caret - “^”- to show raising to a power. Thus x^2 is x squared, and so on. We will use a star for multiplication and sqrt(x) for square root of x, and the usual slash for division.
If we use the Pythagorean theorem, we get that x = s*sqrt(3)/2. The area then is s^2*sqrt(3)/4.
That’s not too hard, but we wanted to make it the same as the circular base of the cone and cylinder. We wanted to have formula that worked for both.
To do that, we used the apothem. The apothem is the distance from the center of any regular polygon to a side, measured perpendicular to that side above. In the case of a triangle it will be the length of a line connecting that side to the center (a, in the diagram that follows).
So instead of considering our triangular base as just ONE triangle, now it makes more sense to think of it as three triangles (because any regular n-sided polygon can be thought of as being made up of n identical isosceles triangles). A square becomes four triangles, a hexagon six. The area of each of these is the apothem times half its base. You can get the apothem length by determining the angle A at the center of the polygon, which is 180 degrees/n. The apothem will be the s/2 * tangent(A) (or, if you prefer, s * tangent(A)/2.)
For regular polygons with n sides, the area is n * s * s / (4 * tan(180/n)), which also happens to be half the perimeter times the apothem. To see this, note that the area equals perimeter * apothem / 2, since the apothem is s / (2 * tan(180/n)) and the perimeter is n * s.
As the number of sides increases, a regular polygon gets rounder and approaches a circle. As this happens, the apothem and radius (the distance from the center to any corner, in the case of a polygon) converge toward the same value, and the perimeter asymptotically approaches 2 * pi * r. This means that the area is (1/2) * (2 * pi * r) * r, which simplifies to pi * r^2. In the case of our OpenSCAD model, the “circle” is a polygon with hundreds of sides approximating a circle, just to make this point. [Whosawhatsis] likes to think about this as “unrolling” the triangles into a rectangle as shown here. The area of the whole rectangle is the perimeter times the apothem, so the area of the triangles making up the polygon is half that.
We will post the link to the OpenSCAD that created these as part of our next update.