1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| % P étant un volume possedant des faces et des vertices
face=P.faces;
vertice=P.vertices;
aire=zeros(size(face,1),1);
centre=zeros(size(face,1),3);
%% la surface de chaque traingle
for i=1:size(face,1) % pour chaque facette
v1 = vertice(face(i,1),:); %sommet n°1
v2 = vertice(face(i,2),:);% 2
v3 = vertice(face(i,3),:);%3
a=norm(v1-v2); % longueur du segment n°1 du triangle
b=norm(v1-v3);%2
c=norm(v2-v3);%3
p = (a + b + c)/2; % superperimeter
aire(i) = sqrt(p*(p - a)*(p - b)*(p - c)); % Heron's formula for triangle area
end
%% le centroide de chaque triangle
for i=1:size(face,1) % pour chaque facette
for j=1:3
centre(i,j)=(vertice(face(i,1),j)+vertice(face(i,2),j)+vertice(face(i,3),j))/3; %sommet n°1
end
end
%% le centre de gravité de la surface
%La surface est constituée de triangles c'est le barycentre (pondéré) des barycentres. La pondération est l'aire de chaque triangle.
%Polygon.Centroid = somme { Triangle.centroid * Triangle.area } / somme {
%Triangle.area }
cg=zeros(3,1);
for k=1:3
cg(k,1)=sum(centre(:,k).*aire(:))/sum(aire(:));
end |
Partager