Professional Documents
Culture Documents
Computing 2D Polygon Moments Using Green's Theorem: Apple Computer, Inc. Immersive Media Technology Development 11/5/97
Computing 2D Polygon Moments Using Green's Theorem: Apple Computer, Inc. Immersive Media Technology Development 11/5/97
nb 1
Computing 2D Polygon
Moments Using Green's
Theorem
Ken Turkowski, turk@apple.com
Apple Computer, Inc.
Immersive Media Technology Development
11/5/97
Green's Theorem
In this paper, we derive the expressions for zero-, first-, and second-order moments for two-dimensional
polygons, using Green's Theorem to convert an area integral to a line integral, then evaluating this in
terms of the polygon vertex coordinates. Green's Theoren is given as:
ContourIntegral@M „ x + N „ yD = AreaIntegral@Hx N - y ML „ x „ yD
ü Edge
It is useful to define polygon edges in terms of a parameter that ranges from zero to one. This then
simplifies the evaluation of the line integrals.
Ex = x0 + t Hx1 - x0L
x0 + t H-x0 + x1L
Moments.nb 2
Ey = y0 + t Hy1 - y0L
y0 + t H-y0 + y1L
ü Differentials
„ x = Hx1 - x0L „ t
„ y = Hy1 - y0L „ t
A = ‡ ‡ „x „y
ü Green's Function #1
A = ‡ ‡ „ x „y = ÅÅÅÅ J- ‡ y „x + ‡ x „ yN
1
2
Evaluating the line integral along the edge of the polygon from (x0,y0) to (x1,y1), we have:
2 0
The zeroth moment is then the sum of the expression evauated at each edge.
ü Green's Function #2
A = ‡ ‡ „ x „y = - ‡ y „x
Evaluating the line integral along the edge of the polygon from (x0,y0) to (x1,y1), we have:
ü Green's Function #3
A = ‡ ‡ „ x „y = ‡ x „y
Evaluating the line integral along the edge of the polygon from (x0,y0) to (x1,y1), we have:
First Moments
Cx = ‡ ‡ x „ x „y
Cy = ‡ ‡ y „ x „y
ü Green's Functions #1
Cx = ‡ ‡ x „ x „y = ÅÅÅÅ ‡ x2 „y
1
2
Moments.nb 4
Cy = ‡ ‡ y „ x „y = - ÅÅÅÅ ‡ y2 „ x
1
2
Evaluating the line integral along the edge of the polygon from (x0,y0) to (x1,y1), we have:
2 0
2 0
1
ÅÅÅÅ
2
1
ÅÅÅÅ
2
- ÅÅÅÅ Ha02 + a0 a1 + a12 L Hb0 - b1L - ÅÅÅÅ Ha12 + a1 a2 + a22 L Hb1 - b2L -
1 1
6 6
ÅÅÅÅ Ha22 + a2 a3 + a32 L Hb2 - b3L - ÅÅÅÅ Ha02 + a0 a3 + a32 L H-b0 + b3L
1 1
6 6
Moments.nb 5
D
a0, x1 -> a0, y0 -> b1, y1 -> b0<L
ü Greens Functions #2
Cx = ‡ ‡ x „ x „y = - ‡ x y „x
Cy = ‡ ‡ y „ x „y = ‡ x y „ y
Evaluating the line integral along the edge of the polygon from (x0,y0) to (x1,y1), we have:
1
ÅÅÅÅ
2
Moments.nb 6
1
ÅÅÅÅ
2
Second Moments
Ixx = ‡ ‡ x2 „x „ y
Ixy = ‡ ‡ x y „ x „ y
Iyy = ‡ ‡ y2 „x „ y
ü Greens Functions #1
Ixx = ‡ ‡ x2 „ x „ y = ÅÅÅÅ ‡ x3 „ y
1
3
Ixy = ‡ ‡ xy „ x „y = ÅÅÅÅ J- ‡ x y2 „ x + ‡ x2 y „ yN
1
4
Iyy = ‡ ‡ y2 „ x „ y = - ÅÅÅÅ ‡ y3 „ x
1
3
Evaluating the line integral along the edge of the polygon from (x0,y0) to (x1,y1), we have:
3 0
i
j y
zE
j
j‡ H-Ex Ey Hx1 - x0L + Ex Ey Hy1 - y0LL „ tz
z
1 1
k {
2 2
IExy = SimplifyA ÅÅÅÅ
4 0
3 0
i
j
1 y
jIExx ê. 9x0 -> - ÅÅÅÅ , x1 -> ÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> - ÅÅÅÅ =z
z +
1 1 1
k 2 2 2 2 {
i
j
1 y
jIExx ê. 9x0 -> ÅÅÅÅ , x1 -> ÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> ÅÅÅÅ =z
z +
1 1 1
k 2 2 2 2 {
i
j
1 y
jIExx ê. 9x0 -> ÅÅÅÅ , x1 -> - ÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> ÅÅÅÅ =z
z +
1 1 1
k 2 2 2 2 {
i
j
1 y
jIExx ê. 9x0 -> - ÅÅÅÅ , x1 -> - ÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> - ÅÅÅÅ =z
z
1 1 1
k 2 2 2 2 {
1
ÅÅÅÅÅÅÅ
12
i
j
jIExy ê. 9x0 -> - ÅÅÅÅ , x1 -> ÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z +
1 1 1 1
k 2 2 2 2 {
i
jIExy
j ê. 9x0 -> ÅÅÅÅ , x1 -> ÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> ÅÅÅÅ =y
z
z +
1 1 1 1
k 2 2 2 2 {
i
j
jIExy ê. 9x0 -> ÅÅÅÅ , x1 -> - ÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> ÅÅÅÅ =y
z
z +
1 1 1 1
k 2 2 2 2 {
i
jIExy
j ê. 9x0 -> - ÅÅÅÅ , x1 -> - ÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z
1 1 1 1
k 2 2 2 2 {
i
j
jIEyy ê. 9x0 -> - ÅÅÅÅ , x1 -> ÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z +
1 1 1 1
k 2 2 2 2 {
i
j
jIEyy ê. 9x0 -> ÅÅÅÅ , x1 -> ÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> ÅÅÅÅ =y
z
z +
1 1 1 1
k 2 2 2 2 {
i
j
jIEyy ê. 9x0 -> ÅÅÅÅ , x1 -> - ÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> ÅÅÅÅ =y
z
z +
1 1 1 1
k 2 2 2 2 {
i
j
jIEyy ê. 9x0 -> - ÅÅÅÅ , x1 -> - ÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z
1 1 1 1
k 2 2 2 2 {
1
ÅÅÅÅÅÅÅ
12
Moments.nb 8
HIExx ê. 8x0
Simplify@
HIExx ê. 8x0
-> a0, x1 -> a1, y0 -> b0, y1 -> b0<L +
HIExx ê. 8x0
-> a1, x1 -> a1, y0 -> b0, y1 -> b1<L +
HIExx ê. 8x0
-> a1, x1 -> a0, y0 -> b1, y1 -> b1<L +
D
-> a0, x1 -> a0, y0 -> b1, y1 -> b0<L
HIExy ê. 8x0
Simplify@
HIExy ê. 8x0
-> a0, x1 -> a1, y0 -> b0, y1 -> b0<L +
HIExy ê. 8x0
-> a1, x1 -> a1, y0 -> b0, y1 -> b1<L +
HIExy ê. 8x0
-> a1, x1 -> a0, y0 -> b1, y1 -> b1<L +
D
-> a0, x1 -> a0, y0 -> b1, y1 -> b0<L
HIEyy ê. 8x0
Simplify@
HIEyy ê. 8x0
-> a0, x1 -> a1, y0 -> b0, y1 -> b0<L +
HIEyy ê. 8x0
-> a1, x1 -> a1, y0 -> b0, y1 -> b1<L +
HIEyy ê. 8x0
-> a1, x1 -> a0, y0 -> b1, y1 -> b1<L +
D
-> a0, x1 -> a0, y0 -> b1, y1 -> b0<L
SimplifyA
i
j
jIExx ê. 9x0 -> - ÅÅÅÅÅ , x1 -> ÅÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z +
w w h h
k 2 2 2 2 {
i
j
jIExx ê. 9x0 -> ÅÅÅÅÅ , x1 -> ÅÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> ÅÅÅÅ =y
z
z +
w w h h
k 2 2 2 2 {
i
jIExx
j ê. 9x0 -> ÅÅÅÅÅ , x1 -> - ÅÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> ÅÅÅÅ =y
z
z +
w w h h
k 2 2 2 2 {
i
jIExx
j ê. 9x0 -> - ÅÅÅÅÅ , x1 -> - ÅÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z
w w h h
k 2 {
E
2 2 2
h w3
ÅÅÅÅÅÅÅÅÅÅÅ
12
Moments.nb 9
SimplifyA
i
j
jIExy ê. 9x0 -> - ÅÅÅÅÅ , x1 -> ÅÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z +
w w h h
k 2 2 2 2 {
i
j
jIExy ê. 9x0 -> ÅÅÅÅÅ , x1 -> ÅÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> ÅÅÅÅ =y
z
z +
w w h h
k 2 2 2 2 {
i
j
jIExy ê. 9x0 -> ÅÅÅÅÅ , x1 -> - ÅÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> ÅÅÅÅ =y
z
z +
w w h h
k 2 2 2 2 {
i
j
jIExy ê. 9x0 -> - ÅÅÅÅÅ , x1 -> - ÅÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z
w w h h
k 2 {
E
2 2 2
SimplifyA
i
j
jIEyy ê. 9x0 -> - ÅÅÅÅÅ , x1 -> ÅÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z +
w w h h
k 2 2 2 2 {
i
j
jIEyy ê. 9x0 -> ÅÅÅÅÅ , x1 -> ÅÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> ÅÅÅÅ =y
z
z +
w w h h
k 2 2 2 2 {
i
j
jIEyy ê. 9x0 -> ÅÅÅÅÅ , x1 -> - ÅÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> ÅÅÅÅ =y
z
z +
w w h h
k 2 2 2 2 {
i
j
jIEyy ê. 9x0 -> - ÅÅÅÅÅ , x1 -> - ÅÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z
w w h h
k 2 {
E
2 2 2
h3 w
ÅÅÅÅÅÅÅÅÅÅÅ
12
ü Green's Functions #2
Ixx = ‡ ‡ x2 „ x „ y = - ‡ x2 y „ x
Ixy = ‡ ‡ xy „ x „y = - ‡ xy2 „ x
Iyy = ‡ ‡ y2 „ x „ y = ‡ xy2 „ y
Evaluating the line integral along the edge of the polygon from (x0,y0) to (x1,y1), we have:
Moments.nb 10
ÅÅÅÅÅÅÅ Hx0 - x1L H2 x0 x1 Hy0 + y1L + x02 H3 y0 + y1L + x12 Hy0 + 3 y1LL
1
12
i
j y
zE
j
j‡ HEx Ey Hx1 - x0LL „ tz
z
1 1
k 0 {
2
IExy2 = SimplifyA- ÅÅÅÅ
2
1
ÅÅÅÅÅÅÅ
H2 x0 x1 H-y02 + y12 L + x02 H3 y02 + 2 y0 y1 + y12 L - x12 Hy02 + 2 y0 y1 + 3 y12 LL
24
iIExx2
j
1 y
j ê. 9x0 -> - ÅÅÅÅ , x1 -> ÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> - ÅÅÅÅ =z
z +
1 1 1
k 2 2 2 2 {
i
j
1 y
jIExx2 ê. 9x0 -> ÅÅÅÅ , x1 -> ÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> ÅÅÅÅ =z
z +
1 1 1
k 2 2 2 2 {
i
j
1 y
jIExx2 ê. 9x0 -> ÅÅÅÅ , x1 -> - ÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> ÅÅÅÅ =z
z +
1 1 1
k 2 2 2 2 {
i
j
1 y
jIExx2 ê. 9x0 -> - ÅÅÅÅ , x1 -> - ÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> - ÅÅÅÅ =z
z
1 1 1
k 2 2 2 2 {
1
ÅÅÅÅÅÅÅ
12
i
j
jIExy2 ê. 9x0 -> - ÅÅÅÅ , x1 -> ÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z +
1 1 1 1
k 2 2 2 2 {
i
j
jIExy2 ê. 9x0 -> ÅÅÅÅ , x1 -> ÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> ÅÅÅÅ =y
z
z +
1 1 1 1
k 2 2 2 2 {
i
j
jIExy2 ê. 9x0 -> ÅÅÅÅ , x1 -> - ÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> ÅÅÅÅ =y
z
z +
1 1 1 1
k 2 2 2 2 {
i
jIExy2
j ê. 9x0 -> - ÅÅÅÅ , x1 -> - ÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z
1 1 1 1
k 2 2 2 2 {
0
Moments.nb 11
i
j
jIEyy2 ê. 9x0 -> - ÅÅÅÅ , x1 -> ÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z +
1 1 1 1
k 2 2 2 2 {
i
jIEyy2
j ê. 9x0 -> ÅÅÅÅ , x1 -> ÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> ÅÅÅÅ =y
z
z +
1 1 1 1
k 2 2 2 2 {
i
jIEyy2
j ê. 9x0 -> ÅÅÅÅ , x1 -> - ÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> ÅÅÅÅ =y
z
z +
1 1 1 1
k 2 2 2 2 {
i
j
jIEyy2 ê. 9x0 -> - ÅÅÅÅ , x1 -> - ÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z
1 1 1 1
k 2 2 2 2 {
1
ÅÅÅÅÅÅÅ
12
ü Green's Functions #3
Ixy = ‡ ‡ xy „ x „y = ‡ x2 y „ y
Evaluating the line integral along the edge of the polygon from (x0,y0) to (x1,y1), we have:
i 1
j y
z
j
j‡ HEx Ey Hy1 - y0LL „ tz
zE
1
k 0 {
2
IExy3 = SimplifyA ÅÅÅÅ
2
- ÅÅÅÅÅÅÅ Hy0 - y1L H2 x0 x1 Hy0 + y1L + x02 H3 y0 + y1L + x12 Hy0 + 3 y1LL
1
24
i
j
jIExy3 ê. 9x0 -> - ÅÅÅÅ , x1 -> ÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> - ÅÅÅÅ =y
z
z +
1 1 1 1
k 2 2 2 2 {
i
j
1 y
jIExy3 ê. 9x0 -> ÅÅÅÅ , x1 -> ÅÅÅÅ , y0 -> - ÅÅÅÅ , y1 -> ÅÅÅÅ =z
z +
1 1 1
k 2 2 2 2 {
i
j
1 y
jIExy3 ê. 9x0 -> ÅÅÅÅ , x1 -> - ÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> ÅÅÅÅ =z
z +
1 1 1
k 2 2 2 2 {
i
j
1 y
jIExy3 ê. 9x0 -> - ÅÅÅÅ , x1 -> - ÅÅÅÅ , y0 -> ÅÅÅÅ , y1 -> - ÅÅÅÅ =z
z
1 1 1
k 2 2 2 2 {
Simplify@AE1 ê. 8x0 -> xs - xd, x1 -> xs + xd, y0 -> ys - yd, y1 -> ys + yd<D
xs yd - xd ys
Moments.nb 12
Simplify@AE2 ê. 8x0 -> xs - xd, x1 -> xs + xd, y0 -> ys - yd, y1 -> ys + yd<D
-2 xd ys
Simplify@AE3 ê. 8x0 -> xs - xd, x1 -> xs + xd, y0 -> ys - yd, y1 -> ys + yd<D
2 xs yd
Simplify@CEx ê. 8x0 -> xs - xd, x1 -> xs + xd, y0 -> ys - yd, y1 -> ys + yd<D
Simplify@CEy ê. 8x0 -> xs - xd, x1 -> xs + xd, y0 -> ys - yd, y1 -> ys + yd<D
CEx1 ê. 8x0 -> xs - xd, x1 -> xs + xd, y0 -> ys - yd, y1 -> ys + yd<D
Simplify@
CEx1 ê. 8x0 -> xs - xd, x1 -> xs + xd, y0 -> ys - yd, y1 -> ys + yd<D
Simplify@
IExx ê. 8x0 -> xs - xd, x1 -> xs + xd, y0 -> ys - yd, y1 -> ys + yd<D
Simplify@
IExy ê. 8x0 -> xs - xd, x1 -> xs + xd, y0 -> ys - yd, y1 -> ys + yd<D
Simplify@
IEyy ê. 8x0 -> xs - xd, x1 -> xs + xd, y0 -> ys - yd, y1 -> ys + yd<D
Simplify@
IExx2 ê. 8x0 -> xs - xd, x1 -> xs + xd, y0 -> ys - yd, y1 -> ys + yd<D
Simplify@
IExy2 ê. 8x0 -> xs - xd, x1 -> xs + xd, y0 -> ys - yd, y1 -> ys + yd<D
Simplify@
IEyy2 ê. 8x0 -> xs - xd, x1 -> xs + xd, y0 -> ys - yd, y1 -> ys + yd<D
Simplify@
IExy3 ê. 8x0 -> xs - xd, x1 -> xs + xd, y0 -> ys - yd, y1 -> ys + yd<D
Simplify@