MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Balance point of a solid

  • To: mathgroup at smc.vnet.net
  • Subject: [mg113695] Re: Balance point of a solid
  • From: Ray Koopman <koopman at sfu.ca>
  • Date: Mon, 8 Nov 2010 03:38:15 -0500 (EST)
  • References: <iaongn$jft$1@smc.vnet.net>

On Nov 2, 2:00 am, Daniel Lichtblau <d... at wolfram.com> wrote:
> 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}};

pts[[2,2]] should be Sqrt[3]/2.
Fixing it does not change 'mass' or 'cmass'.
Looks like it was just a transcription error,
that the actual code was correct.

> 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])}

cmass = w.Most/@pts, with w = #/Tr@#&[{h1,h2,h3}+(h1+h2+h3)] ??

>
> 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


  • Prev by Date: Re: Manipulate with dynamic maximum on slider
  • Next by Date: Re: FFT in mathematica
  • Previous by thread: Re: Balance point of a solid
  • Next by thread: Re: Balance point of a solid