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