Polyhedral Mass Properties (Revisited)

Similar documents
Intersection of Ellipsoids

Least-Squares Fitting of Data with Polynomials

Distance from Line to Rectangle in 3D

LOWELL JOURNAL. MUST APOLOGIZE. such communication with the shore as Is m i Boimhle, noewwary and proper for the comfort

Solving Systems of Polynomial Equations

MATH 280 Multivariate Calculus Fall Integrating a vector field over a surface

Fitting a Natural Spline to Samples of the Form (t, f(t))

Neatest and Promptest Manner. E d i t u r ami rul)lihher. FOIt THE CIIILDIIES'. Trifles.

A DARK GREY P O N T, with a Switch Tail, and a small Star on the Forehead. Any

MANY BILLS OF CONCERN TO PUBLIC

LOWELL WEEKLY JOURNAL

Page Problem Score Max Score a 8 12b a b 10 14c 6 6

Low-Degree Polynomial Roots

Information About Ellipses

Computing Orthonormal Sets in 2D, 3D, and 4D

Math 234 Final Exam (with answers) Spring 2017

The Laplace Expansion Theorem: Computing the Determinants and Inverses of Matrices

LOWELL WEEKLY JOURNAL

MAT 211 Final Exam. Spring Jennings. Show your work!

A Relationship Between Minimum Bending Energy and Degree Elevation for Bézier Curves

' Liberty and Umou Ono and Inseparablo "

Two Posts to Fill On School Board

LOWELL WEEKLY JOURNAL

T k b p M r will so ordered by Ike one who quits squuv. fe2m per year, or year, jo ad vaoce. Pleaie and THE ALTO SOLO

Simplifying Rational Expressions and Functions

APPM 2350 FINAL EXAM FALL 2017

B-Spline Interpolation on Lattices

Reconstructing an Ellipsoid from its Perspective Projection onto a Plane

Jim Lambers MAT 280 Summer Semester Practice Final Exam Solution. dy + xz dz = x(t)y(t) dt. t 3 (4t 3 ) + e t2 (2t) + t 7 (3t 2 ) dt

1 Integration in many variables.

Multiple Integrals and Vector Calculus (Oxford Physics) Synopsis and Problem Sets; Hilary 2015

Solutions to Sample Questions for Final Exam

Interpolation of Rigid Motions in 3D

18.02 Multivariable Calculus Fall 2007

Crew of25 Men Start Monday On Showboat. Many Permanent Improvements To Be Made;Project Under WPA

Mission 1 Simplify and Multiply Rational Expressions

Mathematics - High School Algebra II

FFTs in Graphics and Vision. Homogenous Polynomials and Irreducible Representations

Lagrange Multipliers

(a) x cos 3x dx We apply integration by parts. Take u = x, so that dv = cos 3x dx, v = 1 sin 3x, du = dx. Thus

Perspective Projection of an Ellipse

Intersection of Rectangle and Ellipse

Distance from a Point to an Ellipse, an Ellipsoid, or a Hyperellipsoid

OWELL WEEKLY JOURNAL

Reading Mathematical Expressions & Arithmetic Operations Expression Reads Note

Archive of Calculus IV Questions Noel Brady Department of Mathematics University of Oklahoma

Fundamental Theorems of Vector

MATH 52 FINAL EXAM DECEMBER 7, 2009

MATH III CCR MATH STANDARDS

MA 441 Advanced Engineering Mathematics I Assignments - Spring 2014

Quadratics and Other Polynomials

AB-267 DYNAMICS & CONTROL OF FLEXIBLE AIRCRAFT

Multiple Integrals and Vector Calculus: Synopsis

Faculty of Engineering, Mathematics and Science School of Mathematics

3.5 Quadratic Approximation and Convexity/Concavity

Intersection of Infinite Cylinders

An Approximation for the Inverse Square Root Function

Chapter 6: Rational Expr., Eq., and Functions Lecture notes Math 1010

Polynomials. In many problems, it is useful to write polynomials as products. For example, when solving equations: Example:

Math Review for Exam 3

M273Q Multivariable Calculus Spring 2017 Review Problems for Exam 3

Rewriting Absolute Value Functions as Piece-wise Defined Functions

How to Use Calculus Like a Physicist

Math 212-Lecture 8. The chain rule with one independent variable

Sec. 1.1: Basics of Vectors

Midterm Preparation Problems

Distance Between Ellipses in 2D


x 9 or x > 10 Name: Class: Date: 1 How many natural numbers are between 1.5 and 4.5 on the number line?

Complex Variables. Chapter 1. Complex Numbers Section 1.2. Basic Algebraic Properties Proofs of Theorems. December 16, 2016

Math 203A - Solution Set 1

Multivariable Calculus and Matrix Algebra-Summer 2017

A. H. Hall, 33, 35 &37, Lendoi

SOLUTIONS TO THE FINAL EXAM. December 14, 2010, 9:00am-12:00 (3 hours)

Chapter 1. Complex Numbers. Dr. Pulak Sahoo

MAC2313 Final A. (5 pts) 1. How many of the following are necessarily true? i. The vector field F = 2x + 3y, 3x 5y is conservative.

7a3 2. (c) πa 3 (d) πa 3 (e) πa3

Moving Along a Curve with Specified Speed

Polynomial Functions

2 Lie Groups. Contents

Maxima and Minima. (a, b) of R if

Least Squares Fitting of Data by Linear or Quadratic Structures

Solutions to old Exam 3 problems

Basic Equations and Inequalities

EASY PUTNAM PROBLEMS

Traditional Pathway: Algebra II

The Area of Intersecting Ellipses

Distance to Circles in 3D

Math 203A - Solution Set 1

0.1 Problems to solve

f. D that is, F dr = c c = [2"' (-a sin t)( -a sin t) + (a cos t)(a cost) dt = f2"' dt = 2

Closed-Form Solution Of Absolute Orientation Using Unit Quaternions

Partial Derivatives. w = f(x, y, z).

MATH The Chain Rule Fall 2016 A vector function of a vector variable is a function F: R n R m. In practice, if x 1, x n is the input,

Rigid body simulation. Once we consider an object with spatial extent, particle system simulation is no longer sufficient

Complex Numbers: Definition: A complex number is a number of the form: z = a + bi where a, b are real numbers and i is a symbol with the property: i

Complex Numbers CK-12. Say Thanks to the Authors Click (No sign in required)

IES Parque Lineal - 2º ESO

MATH 280 Multivariate Calculus Spring Derivatives of vector fields: divergence and curl

CHAPTER 1: Review (See also the Precalculus notes at

Transcription:

Polyhedral Mass Properties (Revisited) David Eberly, Geometric Tools, Redmond WA 98052 https://www.geometrictools.com/ This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Created: December 31, 2002 Last Modified: November 3, 2009 Contents 1 Introduction 2 2 Reduction of Volume Integrals 2 3 Computation of Surface Integrals 3 4 Comparison to Mirtich s ormulas 5 5 Pseudocode 5 1

1 Introduction This document takes a second look at the article by Brian Mirtich, ast and accurate computation of polyhedral mass properties, Journal of Graphics Tools, vol. 1, no. 2, pp. 31-50, 1996. The article discusses how to compute the mass and inertia tensor for a solid, simple polyhedron of constant mass density. The construction uses the Divergence Theorem from calculus for reducing volume integrals to surface integrals, a reduction from three-dimensional integrals to two-dimensional integrals. The polyhedron surface is a union of planar faces, so the surface integrals are effectively integrals in various planes. Projection of these faces onto coordinate planes are used to set up yet another reduction in dimension. Green s Theorem, the twodimensional analog of the Divergence Theorem, is used to reduce the planar integrals to line integrals around the boundary of the projected faces. Two important points emphasized in the paper are (1) the projection of the polyhedron faces onto the appropriate coordinate planes to avoid numerical problems and (2) the reduction using Green s Theorem to obtain common subexpressions (integrals of polynomials of one variable) to avoid redundant calculations. Item (2) occurs to handle polyhedron faces with four or more vertices. Item (1) is necessary in order to robustly compute what is required by item (2). When the polyhedron faces are triangles, neither items (1) nor (2) are necessary. A simpler construction is provided here when the polyhedron faces are triangles. A consequence of the formulas as derived in this document is that they require significantly less computational time than does Mirtich s formulas. I suspect that for nontriangular faces, Mirtich s formulas are reducible to simpler expressions. 2 Reduction of Volume Integrals The mass, center of mass, and inertia tensor require computing volume integrals of the type p(x, y, z) dv (1) V where V is the volumetric region of integration and dv is an infinitesimal measure of volume. The function p(x, y, z) is a polynomial selected from 1, x, y, z, x 2, y 2, z 2, xy, xz, and yz. We are interested in computing these integrals where V is the region bounded by a simple polyhedron. A volume integral may be converted to a surface integral via the Divergence Theorem from calculus: p(x, y, z) dv = dv = N ds (2) V V where S is the boundary of the polyhedron, a union of triangular faces, and where ds is an infinitesimal measure of surface area. The function (x, y, z) is chosen so that = p. The vector N denotes outward-pointing, unit-length surface normals. The choices for in the Mirtich paper are p p S 1 (x, 0, 0) y 2 (0, y 3 /3, 0) x (x 2 /2, 0, 0) z 2 (0, 0, z 3 /3) y (0, y 2 /2, 0) xy (x 2 y/2, 0, 0) z (0, 0, z 2 /2) xz (0, 0, z 2 x/2) x 2 (x 3 /3, 0, 0) yz (0, y 2 z/2, 0) (3) 2

The computational effort is now devoted to calculating the integrals N ds. The boundary S is just S the union of polyhedral faces. An outward-pointing, unit-length normal to face is denoted by N. The surface integral decomposes to N ds = N ds (4) S S The integrals to be computed are now reduced to V dv = S (N ı) x ds V y2 dv = 1 3 S (N j) y3 ds V x dv = 1 2 S (N ı) x2 ds V z2 dv = 1 3 S (N k) z3 ds V y dv = 1 2 S (N j) y2 ds V xy dv = 1 2 S (N ı) x2 y ds V z dv = 1 2 S (N k) z2 ds V yz dv = 1 2 S (N j) y2 z ds V x2 dv = 1 3 S (N ı) x3 ds V xz dv = 1 2 S (N k) z2 x ds (5) 3 Computation of Surface Integrals We now need to compute integrals of the form (N l) q(x, y, z) ds (6) where l is one of ı, j, or k and where q is one of x, x 2, y 2, z 2, x 3, y 3, z 3, x 2 y, y 2 z, or z 2 x. Let the triangular face be counterclockwise ordered and have vertices P i = (x i, y i, z i ), 0 i 2. Two edges are for 1 i 2. A parameterization of the face is E i = P i P 0 = (x i x 0, y i y 0, z i z 0 ) = (α i, β i, γ i ) (7) P(u, v) = P 0 + ue 1 + ve 2 = (x 0 + α 1 u + α 2 v, y 0 + β 1 u + β 2 v, z 0 + γ 1 u + γ 2 v) = (x(u, v), y(u, v), z(u, v)) (8) where u 0, v 0, and u + v 1. The infinitesimal measure of surface area is ds = P u P v du dv = E 1 E 2 du dv (9) and the outer pointing unit-length face normal is N = E 1 E 2 E 1 E 2 = (β 1γ 2 β 2 γ 1, α 2 γ 1 α 1 γ 2, α 1 β 2 α 2 β 1 ) = (δ 0, δ 1, δ 2 ) E 1 E 2 E 1 E 2 (10) The integrals in equation (6) reduces to (N l) q(x, y, z) ds = (E 1 E 2 l) 1 1 v 3 0 0 q(x(u, v), y(u, v), z(u, v)) du dv (11)

where x(u, v), y(u, v), and z(u, v) are the components of the parameterization in equation (8). The integrals on the right-hand side of equation (11) can be computed symbolically, either by hand or by a symbolic algebra package. The formulas listed later were computed using Mathematica. The instructions are x = x0+u ( x1 x0)+v ( x2 x0 ) y = y0+u ( y1 y0)+v ( y2 y0 ) z = z0+u ( z1 z0)+v ( z2 z0 ) i n t x = Together [ I n t e g r a t e [ x, { v, 0, 1 }, { u,0,1 v } ] ] i n t x x = Together [ I n t e g r a t e [ x ˆ2,{ v, 0, 1 }, { u,0,1 v } ] ] i n t y y = Together [ I n t e g r a t e [ y ˆ2,{ v, 0, 1 }, { u,0,1 v } ] ] i n t z z = Together [ I n t e g r a t e [ z ˆ2,{ v, 0, 1 }, { u,0,1 v } ] ] i n t x x x = Together [ I n t e g r a t e [ x ˆ3,{ v, 0, 1 }, { u,0,1 v } ] ] i n t y y y = Together [ I n t e g r a t e [ y ˆ3,{ v, 0, 1 }, { u,0,1 v } ] ] i n t z z z = Together [ I n t e g r a t e [ z ˆ3,{ v, 0, 1 }, { u,0,1 v } ] ] i n t x x y = Together [ I n t e g r a t e [ x ˆ2 y, { v, 0, 1 }, { u,0,1 v } ] ] i n t y y z = Together [ I n t e g r a t e [ y ˆ2 z, { v, 0, 1 }, { u,0,1 v } ] ] i n t z z x = Together [ I n t e g r a t e [ z ˆ2 x, { v, 0, 1 }, { u,0,1 v } ] ] Common subexpressions may be obtained by some additional factoring. Define s n (w) = n i=0 w n i 0 w i 1, f 0 (w) = 1, and f n (w) = s n (w) + w 2 f n 1 (w) for n 1 (12) Think of these as macros where the input argument is a textual replacement wherever w occurs in the right-hand sides. Also define the macro g i (w) = f 2 (w) + w i f 1 (w) + w 2 i (13) The specific expressions required in the surface integrals are listed below in terms of w. expanded three times, once for each of x, y, and z. Each macro is f 1 (w) = w 0 + w 1 + w 2 = [w 0 + w 1 ] + w 2 f 2 (w) = w0 2 + w 0 w 1 + w1 2 + w 2 f 1 (w) = [[w0] 2 + w 1 {w 0 + w 1 )}] + w 2 {f 1 (w)} f 3 (w) = w0 3 + w0w 2 1 + w 0 w1 2 + w1 3 + w 2 f 2 (w) = w 0 {w0} 2 + w 1 {w0 2 + w 0 w 1 + w1} 2 + w 2 {f 2 (w)} g i (w) = {f 2 (w)} + w i ({f 1 (w)} + w i ) (14) The square brackets [ ] indicate that the subexpression is computed and saved in temporary variables for later use. The curly braces { } indicate that the subexpression was computed earlier and can be accessed from temporary variables. The number of subexpressions that must be stored at any one time is small, so cache coherence should not be an issue when enough floating point registers are available for storing the subexpressions (see the pseudocode later in this document). The integrals are (N ı) x ds = δ0 6 f 1(x) (N j) y3 ds = δ1 20 f 3(y) (N ı) x2 ds = δ0 12 f 2(x) (N k) z3 ds = δ2 20 f 3(z) (N j) y2 ds = δ1 12 f 2(y) (N ı) x2 y ds = δ0 60 (y 0g 0 (x) + y 1 g 1 (x) + y 2 g 2 (x)) (N k) z2 ds = δ2 12 f 2(z) (N j) y2 z ds = δ1 60 (z 0g 0 (y) + z 1 g 1 (y) + z 2 g 2 (y)) (N ı) x3 ds = δ0 20 f 3(x) (N k) z2 x ds = δ2 60 (x 0g 0 (z) + x 1 g 1 (z) + x 2 g 2 (z)) (15) 4

4 Comparison to Mirtich s ormulas Let us compare the formulas for Q x = (N ı) x ds. In this document the integral is Q x = δ 0 6 f 1(x) = δ 0 6 (x 0 + x 1 + x 2 ) (16) In Mirtich s formulas there are two possibilities for computing Q x. One occurs when the projection variable is γ = z. Assembling the pieces of the corresponding formulas in the paper and switching to the notation used in this document, Q x = N ı N π x k = N ı Sign(N k) 2 6 i=0 (y i+1 y i )(x 2 i+1 + x i+1x i + x 2 i ) = δ0 6 N k (y 1 y 0)(x 2 1 +x0x1+x2 0 )+(y2 y1)(x2 2 +x1x2+x2 1 )+(y0 y2)(x2 0 +x0x2+x2 2 ) (x 1 x 0)(y 2 y 0) (x 2 x 0)(y 1 y 0) (17) The final formula requires much more computational time than the one derived in this document. In fact the numerator is exactly divisible by the denominator and the fraction reduces to x 0 + x 1 + x 2, as it should to be equivalent to the Q x in equation (16). The reduction was verified using Mathematica. If the projection variable is γ = x, Q x = 1 N ı ((N j)π y + (N k)π z (N P 0 )π 1 ) ( = 1 δ 16 2 δ 0 i=0 (z i+1 z i )(yi+1 2 + y i+1y i + yi 2) δ2 2 6 i=0 (y i+1 y i )(zi+1 2 + z i+1z i + zi 2) 2 i=0 (z i+1 z i )(y i+1 + y i )) δ 0x 0+δ 1y 0+δ 2z 0 2 (18) The correctness of this formula was verified using Mathematica; in fact it reduces to the one in equation (16). The computational requirements for this expression are enormous compared to that of equation (16). Comparisons between the formulas for the other integrals is possible, but you will find that the differences in computational time become even greater than in the example shown here. 5 Pseudocode The pseudocode for computing the integrals is quite simple. The polyhedron vertices are passes as the array p[]. The number of triangles is tmax. The array index[] has tmax triples of integers that are indices into the vertex array. The return values are the mass, the center of mass, and the inertia tensor relative to the center of mass. The code assumes that the rigid body has constant density 1. If your rigid body has constant density D, then you need to multiply the output mass by D and the output inertia tensor by D. MACRO S u b e x p r e s s i o n s (w0, w1, w2, f1, f2, f3, g0, g1, g2 ) { temp0 = w0+w1 ; f1 = temp0+w2 ; temp1 = w0 w0 ; temp2 = temp1+w1 temp0 ; f2 = temp2+w2 f1 ; f3 = w0 temp1+w1 temp2+w2 f2 ; g0 = f2+w0 ( f1+w0 ) ; g1 = f2+w1 ( f1+w1 ) ; g2 = f2+w2 ( f1+w2 ) ; } v o i d Compute ( P o i n t p [ ], i n t tmax, i n t i n d e x [ ], R e a l& mass, P o i n t& cm, M a t r i x& i n e r t i a ) { c o n s t a n t Real mult [ 1 0 ] = { 1/6,1/24,1/24, 1 / 2 4, 1 / 6 0,1/60,1/60, 1/120, 1 / 1 2 0, 1 / 1 2 0 } ; Real i n t g [ 1 0 ] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ; // o r d e r : 1, x, y, z, x ˆ2, y ˆ2, z ˆ2, xy, yz, zx 5

f o r ( t = 0 ; t < tmax ; t++) { // g e t v e r t i c e s o f t r i a n g l e t i 0 = i n d e x [3 t ] ; i 1 = i n d e x [3 t +1]; i 2 = i n d e x [3 t +2]; x0 = p [ i 0 ]. x ; y0 = p [ i 0 ]. y ; z0 = p [ i 0 ]. z ; x1 = p [ i 1 ]. x ; y1 = p [ i 1 ]. y ; z1 = p [ i 1 ]. z ; x2 = p [ i 2 ]. x ; y2 = p [ i 2 ]. y ; z2 = p [ i 2 ]. z ; // get edges and c r o s s product of edges a1 = x1 x0 ; b1 = y1 y0 ; c1 = z1 z0 ; a2 = x2 x0 ; b2 = y2 y0 ; c2 = z2 z0 ; d0 = b1 c2 b2 c1 ; d1 = a2 c1 a1 c2 ; d2 = a1 b2 a2 b1 ; // compute i n t e g r a l terms S u b e x p r e s s i o n s ( x0, x1, x2, f1x, f2x, f3x, g0x, g1x, g2x ) ; S u b e x p r e s s i o n s ( y0, y1, y2, f1y, f2y, f3y, g0y, g1y, g2y ) ; S u b e x p r e s s i o n s ( z0, z1, z2, f1z, f2z, f3z, g0z, g1z, g2z ) ; // update i n t e g r a l s i n t g [ 0 ] += d0 f 1 x ; i n t g [ 1 ] += d0 f 2 x ; i n t g [ 2 ] += d1 f 2 y ; i n t g [ 3 ] += d2 f 2 z ; i n t g [ 4 ] += d0 f 3 x ; i n t g [ 5 ] += d1 f 3 y ; i n t g [ 6 ] += d2 f 3 z ; i n t g [ 7 ] += d0 ( y0 g0x+y1 g1x+y2 g2x ) ; i n t g [ 8 ] += d1 ( z0 g0y+z1 g1y+z2 g2y ) ; i n t g [ 9 ] += d2 ( x0 g0z+x1 g1z+x2 g2z ) ; } f o r ( i = 0 ; i < 1 0 ; i ++) i n t g [ i ] = mult [ i ] ; mass = i n t g [ 0 ] ; // c e n t e r o f mass cm. x = i n t g [ 1 ] / mass ; cm. y = i n t g [ 2 ] / mass ; cm. z = i n t g [ 3 ] / mass ; } // i n e r t i a t e n s o r r e l a t i v e to c e n t e r o f mass i n e r t i a. xx = i n t g [5]+ i n t g [6] mass (cm. y cm. y+cm. z cm. z ) ; i n e r t i a. yy = i n t g [4]+ i n t g [6] mass (cm. z cm. z+cm. x cm. x ) ; i n e r t i a. zz = i n t g [4]+ i n t g [5] mass (cm. x cm. x+cm. y cm. y ) ; i n e r t i a. xy = ( i n t g [7] mass cm. x cm. y ) ; i n e r t i a. yz = ( i n t g [8] mass cm. y cm. z ) ; i n e r t i a. xz = ( i n t g [9] mass cm. z cm. x ) ; 6