Algoritmo para el cálulo de áreas

agosarat
10 de Mayo del 2006
Hola, me gustaría saber si existe un algoritmo para el cálculo del área y el centro de gravedad de un polígono irregular conociendo sólo los vértices. No me importa el lenguaje de programación, lo podría traducir después.
Gracias

simon
10 de Mayo del 2006
!!!!!!!!!!!!!!!!!!!!!!!!!!!!cálculo de las áreas de cada elemento!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


write ( 15,* ) 'valores vector U'
do i=1,t
do j=1,3
u( i, j )=a ( b ( i, 2 ) , j ) - a ( b ( i ,1 ) , j )
enddo !!!!!j!!!!
enddo !!!!i!!!!
do i=1,t
write ( 15,* ) ( u ( i, j) ,j=1,3)
enddo


write ( 15,* ) 'valores vector V'
do i=1,t
do j=1,3
v( i, j )=a ( b ( i, 3 ) , j ) - a ( b ( i ,1 ) , j )
enddo !!!!!j!!!!
enddo !!!!i!!!!
do i=1,t
write ( 15,* ) ( v ( i, j), j=1,3)
enddo



write ( 15,* ) 'valores vector W'
do i=1,t
do j=1,3
w( i, j )=a ( b ( i, 3 ) , j ) - a ( b ( i ,2 ) , j )
enddo !!!!!j!!!!
enddo !!!!i!!!!
do i=1,t
write ( 15,* ) ( w ( i, j), j=1,3)
enddo



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!cálculo del producto vectorial a x b!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

write ( 15,* ) 'cálculo vectorial'
j=1
do i=1,t
e ( i, j ) = ( u ( i , j+1 ) * v ( i , j + 2 ) - u ( i , j+2 ) * v ( i , j + 1 ))
enddo

j=2
do i=1,t
e ( i, j ) = ( u ( i , j+1 ) * v ( i , j ) - u ( i , j-1 ) * v ( i , j + 1 ))
enddo

j=3
do i=1,t
e ( i, j ) = ( u ( i , j-2 ) * v ( i , j -1 ) - u ( i , j-1 ) * v ( i , j-2 ))
enddo

do i=1,t
write ( 15,* ) ( e (i,j),j=1,3)
enddo


write ( 15,* ) 'modulo de vectores'
emod ( i )=0
do i=1,t
do j=1,3
emod ( i )=sqrt ( emod (i)+e(i,j)*e(i,j))
enddo
enddo

do i=1,t
write ( 15,*) 'areas de los elemntos'

do i=1,t
area(i)=emod(i)/2
enddo

total=0
do i=1,t
total=total+area(i)
enddo
write ( 15 ,* ) 'area total',total





close ( 15 )




return
end



subroutine centroides(Xcent,Ycent,Zcent,X1,X2,X3,Y1,Y2,Y3,Z1,Z2,Z3)






a1=X2-X1
a2=Y2-Y1
a3=Z2-Z1
b1=X3-X1
b2=Y3-Y1
b3=Z3-Z1
c1=X3-X1
c2=Y3-Y1
c3=Z3-Z1


u1=a2*b3-a3*b2
u2=a3*b1-a1*b3
u3=a1*b2-a2*b1

umod=sqrt(u1*u1+u2*u2+u3*u3)


area1=umod/2


atotal=area1

Xm1=(X1+X2+X3)/3
Ym1=(Y1+Y2+Y3)/3
Zm1=(Z1+Z2+Z3)/3



Xcent=(area1*Xm1+area2*Xm2)/atotal
Ycent=(area1*Ym1+area2*Ym2)/atotal
Zcent=(area1*Zm1+area2*Zm2)/atotal

return
end