COMPGROUPS.NET | Search | Post Question | Groups | Stream | About | Register

### Balance point of a solid

• Follow

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

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

```
 0
Reply Andreas 11/1/2010 10:00:02 AM

```HI all,

Not certain if the following will show up in the forum, but I had to
acknowledge a great solution I received from Daniel Lichtblau.

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

Now I need to extend this solution to 4 and 5 dimensions.  Take the
idea of the solid I described in my original post and extend it and
the integration to 4, 5, or better yet n dimensions.  Not certain it's
possible.  Any thoughts or ways to approach this problem appreciated.

Thanks,
A

....and again thanks to Daniel.

```
 0
Reply Andreas 11/2/2010 10:03:27 AM

```On Nov 1, 3:00 am, Andreas <aa...@ix.netcom.com> 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

This is a top-of-the head response, so it may be completely off, but
why not think of the solid as two pieces: a flat-topped triangular
column, height = min(h1,h2,h3), and a tetrahedral cap. The centroid
of each piece is the simple average of its vertices. The centroid of
the whole thing is the weighted average of the two centroids, with
the weights being the volumes of the pieces.

I'm not sure how you want to extend the solid to n dimensions.
Can you be a little more specific?

```
 0
Reply Ray 11/3/2010 7:56:36 AM

```On Nov 3, 12:56 am, Ray Koopman <koop...@sfu.ca> wrote:
> On Nov 1, 3:00 am, Andreas <aa...@ix.netcom.com> 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
>
> This is a top-of-the head response, so it may be completely off, but
> why not think of the solid as two pieces: a flat-topped triangular
> column, height = min(h1,h2,h3), and a tetrahedral cap.

Sorry, but the cap isn't necessarily a tetrahedron.

> The centroid of each piece is the simple average of its vertices.
> The centroid of the whole thing is the weighted average of the two
> centroids, with the weights being the volumes of the pieces.
>
> I'm not sure how you want to extend the solid to n dimensions.
> Can you be a little more specific?

```
 0
Reply Ray 11/4/2010 9:04:27 AM

```Ray,

Thanks for looking at this.

> This is a top-of-the head response, so it may be completely off, but
> why not think of the solid as two pieces: a flat-topped triangular
> column, height = min(h1,h2,h3), and a tetrahedral cap. The centroid
> of each piece is the simple average of its vertices. The centroid of
> the whole thing is the weighted average of the two centroids, with
> the weights being the volumes of the pieces.

The centroid of the triangular column you described clearly falls
directly below its center of mass, but I don't think the centroid of
the tetrahedral cap would fall directly below it's center of mass.  In
the simplest analogy, if you divide a right triangle into equal areas
with a line that intersects either of the sides forming the 90 degree
angle (and thus parallel to the other leg forming the right angle, it
won't intersect at the center of the side.

That said, I very much take your point about dividing the problem into
more manageable pieces.  Something I may need to do as I try to extend
it into n dimensions.

> I'm not sure how you want to extend the solid to n dimensions.
> Can you be a little more specific?

The base equilateral triangle holds the key.  I want to extend that to
n dimensions, place trapezoids on the edges, and connect the resulting
tops.

Always tricky trying to visualize in more than 3 dimensions, but I
think the triangle would become a regular simplex.  From wikipedia:

"...simplex (plural simplexes or simplices) is a generalization of the
notion of a triangle or tetrahedron to arbitrary dimension.
Specifically, an n-simplex is an n-dimensional polytope which is the
convex hull of its n + 1 vertices. For example, a 2-simplex is a
triangle, a 3-simplex is a tetrahedron, and a 4-simplex is a
pentachoron."

If I follow this correctly, to extend what I have into 4 dimensions,
my "base" would become regular tetrahedron, in 5 dimensions a regular
pentachron and so on.  Then I build up the multidimensional solid with
additional trapezoids on all the edges.

Does this explanation make sense?

Best,
A

```
 0
Reply Andreas 11/4/2010 9:07:46 AM

```On Nov 4, 2:07 am, Andreas <aa...@ix.netcom.com> wrote:
>> [...]
>> I'm not sure how you want to extend the solid to n dimensions.
>> Can you be a little more specific?
>
> The base equilateral triangle holds the key. I want to extend that
> to n dimensions, place trapezoids on the edges, and connect the
> resulting tops.
>
> Always tricky trying to visualize in more than 3 dimensions, but I
> think the triangle would become a regular simplex. From wikipedia:
>
> "...simplex (plural simplexes or simplices) is a generalization of
> the notion of a triangle or tetrahedron to arbitrary dimension.
> Specifically, an n-simplex is an n-dimensional polytope which is
> the convex hull of its n + 1 vertices. For example, a 2-simplex is
> a triangle, a 3-simplex is a tetrahedron, and a 4-simplex is a
> pentachoron."
>
> If I follow this correctly, to extend what I have into 4 dimensions,
> my "base" would become regular tetrahedron, in 5 dimensions a
> regular pentachron and so on. Then I build up the multidimensional
> solid with additional trapezoids on all the edges.

I was hoping you would algebraicize it. Is this what you mean?
Let A be an n+1 x n matrix whose rows contain the coordinates of n+1
mutually equidistant points. Then the coordinates of the vertices of
your solid are contained in the rows of the 2(n+1) x n+1 matrix
{{A,0},   where 0 is a column of zeros,
{A,h}},  and h is a column of (positive) heights.

```
 0
Reply Ray 11/5/2010 10:13:05 AM

```Ray,

I think that sounds right and follows the I found in the wikipedia
entry for Simplex http://en.wikipedia.org/wiki/Simplex.  The entry has
a discussion of
"Cartesian coordinates for regular n-dimensionsl simplex in Rn" that
aplies to this.

To relate this to what I described earlier...  for n = 4 dimensions, I
need a tetrahedron as my "base" it needs 4 points to describe it and
as you stated their coordinates must be mutually equidistant.  In my
application the distance between them would always equal 1 for all of
these "bases".  Their must be another word to describe this besides
base, but base seems intuitive to me.

```
 0
Reply Andreas 11/6/2010 10:01:15 AM

```Daniel, Ray, Clifford -- Many thanks for the thought provoking
contributions.

Ray and others have found using integration on this problem takes
inordinately long to calculate once you get to 5 dimensions.

Could one attack this problem in another way?  It occurred to me that
given that we know the lengths of the base simplex and heights of the
trapezoids as well as the right angles of the heights to the base
simplex one could then calculate the length of the top lines and solve
the entire thing geometrically without needing to integrate.  Not
necessarily pretty or elegant but it might give give a solution that
calculates fast.

Anyone think this could work?

```
 0
Reply Andreas 11/11/2010 11:11:28 AM

```On Nov 11, 3:11 am, Andreas <aa...@ix.netcom.com> wrote:
> Daniel, Ray, Clifford -- Many thanks for the thought provoking
> contributions.
>
> Ray and others have found using integration on this problem takes
> inordinately long to calculate once you get to 5 dimensions.
>
> Could one attack this problem in another way?  It occurred to me
> that given that we know the lengths of the base simplex and heights
> of the trapezoids as well as the right angles of the heights to the
> base simplex one could then calculate the length of the top lines and
> solve the entire thing geometrically without needing to integrate.
> Not necessarily pretty or elegant but it might give give a solution
> that calculates fast.
>
> Anyone think this could work?

The solution I found, rewritten here in the notation of my Nov 5
post as  ((h/Tr@h + 1)/(1 + Length@h)).A ,  is fast and agrees
with the results given by integrating. What's missing is a proof.

```
 0
Reply Ray 11/12/2010 10:26:51 AM

```On Nov 12, 2:26 am, Ray Koopman <koop...@sfu.ca> wrote:
> On Nov 11, 3:11 am, Andreas <aa...@ix.netcom.com> wrote:
>
>> Daniel, Ray, Clifford -- Many thanks for the thought provoking
>> contributions.
>>
>> Ray and others have found using integration on this problem takes
>> inordinately long to calculate once you get to 5 dimensions.
>>
>> Could one attack this problem in another way?  It occurred to me
>> that given that we know the lengths of the base simplex and heights
>> of the trapezoids as well as the right angles of the heights to the
>> base simplex one could then calculate the length of the top lines and
>> solve the entire thing geometrically without needing to integrate.
>> Not necessarily pretty or elegant but it might give give a solution
>> that calculates fast.
>>
>> Anyone think this could work?
>
> The solution I found, rewritten here in the notation of my Nov 5
> post as  ((h/Tr@h + 1)/(1 + Length@h)).A ,  is fast and agrees
> with the results given by integrating. What's missing is a proof.

Here's a different approach to integrating. 'h' does not need to be
ordered. Perhaps it will suggest a proof of the 'fastcmass' formula.

In[1]:=
h = {1,2,3,4}
n = Length@h;
A = Transpose[Prepend[#,0]& /@
CholeskyDecomposition[(IdentityMatrix[n-1]+1)/2]]
fastcmass = Simplify[((h/Tr@h + 1)/(1 + n)).A]

Out[1]= {1,2,3,4}
Out[3]= {{0,0,0},
{1,0,0},
{1/2,Sqrt[3]/2,0},
{1/2,1/(2 Sqrt[3]),Sqrt[2/3]}}
Out[4]= {51/100,53/(100 Sqrt[3]),(7 Sqrt[2/3])/25}

In[5]:=
vars = Append[Array[x,n-1],1]
w = Simplify@LinearSolve[Append[Transpose@A,Table[1,{n}]], vars]

Out[5]= {x[1],x[2],x[3],1}
Out[6]= {1-x[1]-x[2]/Sqrt[3]-x[3]/Sqrt[6],
x[1]-x[2]/Sqrt[3]-x[3]/Sqrt[6],
(2 x[2])/Sqrt[3]-x[3]/Sqrt[6],
Sqrt[3/2] x[3]}
In[7]:=
cmass = Most@#/Last@#& @ Integrate[Boole[And@@Thread[w >= 0]] *
w.h * vars, Sequence@@Array[{x[#],0,Max@A[[All,#]]}&,n-1]]

Out[7]= {51/100,53/(100 Sqrt[3]),(7 Sqrt[2/3])/25}

```
 0
Reply Ray 11/14/2010 11:08:01 AM

```Ray /Daniel,

I came across something last night on the Wolfram Mathworld site,

Cayley-Menger Determinant - A determinant that gives the volume of a
simplex in  dimensions.

http://mathworld.wolfram.com/Cayley-MengerDeterminant.html

This goes quite a beyond my experience, but I think it relates to both
Daniel's "... idea to find the "hyperarea" of the base, and multiply
by average of the heights." and Ray's solution.

Maybe a proof of Ray's solution passes through Cayley-Menger, but
Ray's seems somehow more elegant to my eyes.

Many thanks for your help.

Best,
Andreas

```
 0
Reply Andreas 11/15/2010 10:50:21 AM

10 Replies
282 Views

(page loaded in 0.125 seconds)

Similiar Articles:

7/26/2012 5:39:11 AM