Centroid of a simple plane shape defined with piecewise smooth polynomials.
The shape is defined with piecewise smooth polynomials. pp is a
cell where each elements is a 2-by-(poly_degree+1) matrix containing a pair
of polynomials.
px(i,:) = pp{i}(1,:) and py(i,:) = pp{i}(2,:).
The edges of the shape should not self-intersect. This function does not check for the sanity of the shape.
See also: shapearea, shape2polygon.
The following code
 # non-convex bezier shape
 boomerang = {[ 0 -2 1; ...
               -4  4 0]; ...
              [0.25 -1; ...
               0     0]; ...
              [ 0 1.5 -0.75; ...
               -3 3    0];
              [0.25 0.75; ...
               0 0]};
 CoM = shapeCentroid (boomerang)
 Gcentroid = centroid(shape2polygon(boomerang))
 figure(1); clf;
 plotShape(boomerang,'-o');
 hold on
 drawPoint(CoM,'xk;shape centroid;');
 drawPoint(Gcentroid,'xr;point centroid;');
 hold off
 axis equal
Produces the following output
CoM = 0.00000 0.52857 Gcentroid = 0.029001 0.534364
and the following figure
| Figure 1 | 
|---|
![]()  | 
The following code
 Lshape = {[0.00000   0.76635; -0.67579  -0.24067]; ...
             [0.77976   0.76635; 0.00000  -0.91646]; ...
             [0.00000   1.54611; 0.38614  -0.91646]; ...
             [-0.43813   1.54611; 0.00000  -0.53032]; ...
             [0.00000   1.10798; 0.28965  -0.53032]; ...
             [-0.34163   1.10798; 0.00000  -0.24067]};...
 CoM = shapeCentroid (Lshape)
 Gcentroid = centroid (shape2polygon (Lshape))
 plotShape(Lshape,'-o');
 hold on
 drawPoint(CoM,'xk;shape centroid;');
 drawPoint(Gcentroid,'xr;point centroid;');
 hold off
 axis equal
Produces the following output
CoM = 1.10204 -0.63981 Gcentroid = 1.08675 -0.51651
and the following figure
| Figure 1 | 
|---|
![]()  | 
Package: geometry