Andreas wrote:
> Hi everyone,
>
> This isn't strictly a Mathematica question, but once I formulate a way
> to think about the problem, I'll use Mathematica to generate solutions
> to specific situations. Besides, this seems like the smartest forum
> going. So...
>
> Background
>
> Start with a equilateral triangle as the base of a solid. The triangle
> has sides:
>
> a1 = a2 = a3 = 1
>
> At right angles to each side of this base triangle stands a trapezoid
> with heights:
>
> h1 , h2, h3
>
> These heights may have different lengths. Typically h1 > h2 > h3,
> but in some cases any or all of them could have equal values.
>
> Of course, all the h's stand at right angles to the base triangle.
>
> Now connect the points of h1, h2, and h3 and we have a solid composed
> of:
>
> 1 equilateral triangle (the base)
> 3 different trapezoids all with their base lengths =1
> 1 triangle on top.
>
> I can find the area of each trapezoid like this:
>
> A = area
> A1 = 1/2 x a1 x (h1 + h3)
> A2 = 1/2 x a2 x (h1 + h2)
> A3 = 1/2 x a3 x (h2 + h3)
>
> I can find the volume like this:
>
> Volume = V
>
> V = A1 x A2 x A3
> or
> V = (a1 x a2 x a3 x (h1 + h3) x (h1 + h2) x (h2 + h3)) / 2^3
>
> Problem:
>
> I need to find the point on the base triangle upon which I can balance
> the solid.
>
> This is not the centroid of the base triangle, because the solid would
> have more weight or volume towards it's highest side, typically h1.
>
> Simply described, I want to find the balance point on the base
> triangle such that if the solid rested on a pin at that point, the
> base triangle would remain parallel to the floor.
>
> My guess is that I need to calculate the center of gravity of the
> volume, then project a line to the base triangle where it would
> intersect the base triangle at a right angle. Basically just dropping
> the center of gravity to the bottom plane.
>
> Maybe a bit tedious, but I should have all the information to
> calculate this. Given the right angles and known lengths I think I
> have enough information to calculate all angles and lengths of the
> solid.
>
> Will this work?
>
> How would I calculate the center gravity for the solid described?
>
> Follow up question...
>
> If this solves the problem for a 3 dimensional solid of this nature,
> how can I extend the solution to a 4th, 5th, or nth dimensional
> space?
>
> Thanks to all.
>
> A
Seems plausible to do this way. Suppose it were not the projection of
the center of mass (that is, it teeters in some direction). Then there
would be a slicing plane perp to the face you are balancing, and through
the center of mass, such that more mass would lie on one side (to wit,
in the "falling" direction) than the other. This would contradict that
point having been the center of mass. If I'm doing physics correctly
today, which is iffy on a good day.
In your case you only need (x,y) coordinates of the center of mass,
because the projection simply removes z. Here is an example with
{h1,h2,h3} set to {1,2,3} respectively.
pts = {{0, 0, h1}, {1/2, Sqrt[2]/2, h2}, {1, 0, h3}};
normal = Cross[pts[[1]] - pts[[2]], pts[[1]] - pts[[3]]];
topplane = ({x, y, z} - pts[[1]]).normal >= 0;
bounds = {z >= 0, y >= 0, y - Sqrt[3]*x <= 0,
y + Sqrt[3] (x - 1) <= 0, topplane};
reprule = Thread[{h1, h2, h3} -> {1, 2, 3}];
Can plot it like this.
RegionPlot3D[
And @@ bounds /. reprule, {x, 0, 1.1}, {y, 0, 1.5}, {z, 0, 3.5},
PlotPoints -> 60]
We compute the total mass (assuming uniform distribution of mass).
In[63]:= mass =
Integrate[
Boole[And @@ bounds] /. reprule, {x, 0, 1}, {y, 0, Sqrt[3]/2}, {z,
0, 3}]
Out[63]= Sqrt[3]/2
Now find the {x,y} coordinates of the center of mass.
In[66]:= cmass =
Integrate[{x, y}*Boole[And @@ bounds] /. reprule, {x, 0, 1}, {y, 0,
Sqrt[3]/2}, {z, 0, 3}]/mass
Out[66]= {13/24, 1/(2 Sqrt[3])}
In[67]:= N[cmass]
Out[67]= {0.541667, 0.288675}
Not a proof of correctness, but this seems like a plausible result.
Daniel Lichtblau
Wolfram Research