Return to Examples Main | Next Example

Exact Section Properties

Basic Polygon

Consider a triangle with the following vertices

p = {{1, 0}, {0, 1}, {0, 0}} ;

closedPolygon converts these points to a series of parametric curves as pure functions. The curves are given the head "path".  The resulting "pure" functions are a bit ugly to look at, but for polygons, there is no need to understand anything about the curve definitions.

c = closedPolygon[p]

path[{{1 + (0 - 1) #1&, 0 + (1 - 0) #1&}, {0 + (0 - 0) #1&, 1 + (0 - 1) #1&}, {0 + (1 - 0) #1&, 0 + (0 - 0) #1&}}]

Using this list of curves, all of the section property functions can be invoked.

area[c]

1/2

ixx[c]

1/12

Note that ixx, ix, iyy, ect are relative to the origin used to define the vertices. For quantities about the cg, use ixxbar, iyybar, ixybar.

ixxbar[c]

1/36

ybar[c]

1/3

All the common properties can be obtained with tabulateProperties

tabulateProperties[c]

Ixx 1/12
Iyy 1/12
Ixy 1/24
Xcg 1/3
Ycg 1/3
Ixx(cg) 1/36
Iyy(cg) 1/36
Ixy(cg) -1/72
Radius of Gyration-x 1/6^(1/2)
Radius of Gyration-y 1/6^(1/2)
Area 1/2
Max. Inertia 1/24
Min. Inertia 1/72

Finally, show the polygon, with the cg marked as a black dot

showPath[c]

[Graphics:HTMLFiles/index_27.gif]

⁃Graphics⁃

Symbolic Usage

Consider the equilateral triangle with leg length w

p3 = {{w/2, 0}, {0, Sqrt[3] w/2}, {-w/2, 0}} ;

c3 = closedPolygon[p3] ;

All the section properties functions work with symbols

area[c3]

(3^(1/2) w^2)/4

Simplify[ixxbar[c3]]

w^4/(32 3^(1/2))

Curved Paths

Any curve that can be described as a series of pure functions can be used. The parameter always runs from 0 to 1 for each line segment. Consider the ellipse generated from a single line segment.

? path

path is a head that designates a list of parametric curves that define a closed boundary. Of t ...  a pure function that gives the x coordinate along curve segment i, and fyi gives the y coordinate

c4 = path[{{a Cos[2Pi #] &, b Sin[2 Pi #] &}}] ;

area[c4]

a b π

ixx[c4]

1/4 a b^3 π

To plot, we have to substitute in some real numbers for a and b.

showPath[c4/.{a->2, b->1}]

[Graphics:HTMLFiles/index_43.gif]

⁃Graphics⁃

tabulate works with symbolic quantities

tabulateProperties[c4]

Ixx 1/4 a b^3 π
Iyy 1/4 a^3 b π
Ixy 0
Xcg 0
Ycg 0
Ixx(cg) 1/4 a b^3 π
Iyy(cg) 1/4 a^3 b π
Ixy(cg) 0
Radius of Gyration-x b/2
Radius of Gyration-y a/2
Area a b π
Max. Inertia 1/4 a^3 b π
Min. Inertia 1/4 a b^3 π

Section with holes

Outer boundary (counter clockwise)

c5 = closedPolygon[{{2, 0}, {2, 2}, {-2, 2}, {-2, 0}}] ;

Inner boundaries (each run clockwise)

c6 = path[{{  1 + .5 Cos[-2Pi #] &, 1 + .5 Sin[-2Pi #] &}}] ; c7 = path[{{-1 + .5 Cos[-2Pi #] &, 1 + .5 Sin[-2Pi #] &}}] ;

section = {c5, c6, c7} ;

showPath has the option Direction (->True, False). If True, arrows are drawn to show the path directions. This is useful for verifying that all the curve segments have been entered properly, The default is False

showPath[section, DirectionTrue]

[Graphics:HTMLFiles/index_58.gif]

⁃Graphics⁃

tabulateProperties[section]

Ixx 8.9977
Iyy 8.9977
Ixy 0
Xcg 0
Ycg 1.
Ixx(cg) 2.56849
Iyy(cg) 8.9977
Ixy(cg) 0
Radius of Gyration-x 1.18301
Radius of Gyration-y 1.18301
Area 6.4292
Max. Inertia 8.9977
Min. Inertia 2.56849

Example with straight and curved segments ( I- Beam)

c1 = path[{ { 1.5 - 3. #&, 4.&}, <br /> { -1.5&, 4. - .25#&} , <br />  ... /2 #] &} , <br /> { .625 + .875 #&, 3.75&} , <br /> { 1.5&, 3.75 + .25#&} }] ;

showPath[c1, DirectionTrue]

[Graphics:HTMLFiles/index_63.gif]

⁃Graphics⁃

tabulateProperties[c1]

Ixx 17.1212
Iyy 3.18513
Ixy 0
Xcg 0
Ycg 1.69656
Ixx(cg) 8.22832
Iyy(cg) 3.18513
Ixy(cg) 0
Radius of Gyration-x 2.35405
Radius of Gyration-y 1.01534
Area 3.0896
Max. Inertia 8.22832
Min. Inertia 3.18513

Regular Polygons

Create a function that returns the vertices of a regular polygon with n sides, and the length of the side is "side".

PolygonPoints[side_, n_] := Table[side/2 Sec[Pi/n] {Cos[t], Sin[t]}, {t, 0, 2Pi (1 - 1/n), 2Pi/n}]

p = PolygonPoints[a, 5]

{{1/2 (-1 + 5^(1/2)) a, 0}, {1/8 (-1 + 5^(1/2))^2 a, 1/4 (-1 + 5^(1/2)) (1/2 (5 + 5^(1/2)))^(1 ... 1/2) (-1 + 5^(1/2)) a}, {1/8 (-1 + 5^(1/2))^2 a, -1/4 (-1 + 5^(1/2)) (1/2 (5 + 5^(1/2)))^(1/2) a}}

The section property functions can then be used to get symbolic results for the properties of the polygon sections.

area[closedPolygon[p]]//FullSimplify

5/4 (5 - 2 5^(1/2))^(1/2) a^2

Create a table of formulae for the area of the polygons going from 3 sides to 8 sides.

TableForm[Table[{n, area[closedPolygon[PolygonPoints[a, n]]]//FullSimplify}, {n, 3, 8}], TableHeadings {None, {"n", "Area"}}]

n Area
3 (3 3^(1/2) a^2)/4
4 a^2
5 5/4 (5 - 2 5^(1/2))^(1/2) a^2
6 (3^(1/2) a^2)/2
7 (a^2 (Root[-21952 + 509600 #1^2 - 3276 #1^4 + #1^6&, 5] + Root[-89915392 + 1204224 #1^2 -  ...  #1^4 + #1^6&, 6] - 8 Sin[(12 π)/7] + 4 Sin[(24 π)/7]))/(32 (1 + Cos[(2 π)/7]))
8 2 (-1 + 2^(1/2)) a^2

The result for 7 uses the Mathematica Root functions. These are implicit notations for the root of a polynomial that cannot be expressed in terms of combinations of radicals. The result for n=7 can be easily expressed as an approximate (Real) value

area[closedPolygon[PolygonPoints[a, 7]]]//FullSimplify//N

0.842756 a^2


Created by Mathematica  (March 7, 2004)