El centro de masas es el punto en una figura donde toda la masa actúa como si estuviera concentrada. Dicho de otra forma, es el punto en el cuál podríamos balancear a la figura si la sostuviéramos con un dedo. El centro de masa no necesariamente coincide con el centro geométrico de la figura.
El centroide, también conocido en física como centro de gravedad y en geometría como baricentro, es el caso especial del centro de masas en el que el objeto tiene su peso uniformemente distribuido, o si la figura y densidad del objeto son simétricas en ese punto. Si todas las masas son iguales, o si no las tomamos en cuenta, al centroide también se le conoce como isobaricentro.
Para calcular el centroide podemos utilizar las fórmulas:
Si queremos calcular el centroide de una figura compleja, podemos dividir la figura en varias partes para después combinarlas mediante las fórmulas:
Si en un polígono tenemos que el peso se concentra en los vértices, donde un vértice k tiene peso mk, y el peso total del sistema es de M, el centroide está definido por:
Y si todos los pesos son iguales, entonces el centroide lo encontramos en el promedio de los vértices:
En cambio, si en el polígono tenemos que el peso se distribuye uniformemente a través del cuerpo, tenemos que:
Donde A es el área del polígono, y al igual que con el cálculo del área, el primer punto se repite al final. En el caso especial del triángulo, esta fórmula nos da el lugar donde se cortan las medianas.
Solución: Nos piden el centro de masas de un polígono convexo, y como no se mencionan pesos, supondremos que el peso a través del polígono es uniforme por lo que podemos encontrar el centro de masas calculando el centroide, utilizando las últimas dos fórmulas.
En la primera líneas declaramos la estructura de un punto. Después tenemos las variables que vamos a utilizar. En el arreglo p guardamos las coordenadas de los puntos, en n la cantidad de vértices del polígono, en c el centroide y utilizamos i para los ciclos.
En seguida tenemos la función turn y quicksort que son prácticamente iguales a la de la sección anterior. El único cambio en la ordenación es que utilizamos c en lugar de a[0].
En la función mass_center calculamos el centroide (líneas 15 a 40). Sabemos que se trata de un polígono convexo, pero los puntos no se encuentran necesariamente en orden. Para ordenarlos, vamos a utilizar un punto que esté dentro del polígono y utilizándolo como referencia, vamos a ordenar por giros (al igual que en problema anterior). También podemos ordenar por pendientes como en el problema de la sección 7.2, con la diferencia de que necesitaríamos calcular las pendientes con respecto al punto con menor valor en y (desempatamos con el valor en x). El punto que vamos a utilizar para calcular los giros, es el promedio de todos los vértices (líneas 19 a 25). Una vez que están ordenados, agregamos el primer vértice al final del arreglo (línea 27) y utilizamos las fórmulas. Podemos ver que las dos fórmulas tienen una parte en común, y que esta parte es la que utilizamos para obtener el área en secciones anteriores. Teniendo esto en cuenta, calculamos la parte en común de las fórmulas en t (línea 30), y en s vamos guardando el acumulado. Después calculamos las componentes en x e y. Por último, dividimos las componentes entre tres veces s, ya que s va a tener el valor del doble del área.
Entrada: |
4 0 1 1 1 0 0 1 0 3 1 2 1 0 0 0 7 -4 -4 -6 -3 -4 -10 -7 -12 -9 -8 -3 -6 -8 -3 1 |
Desarrollo: |
orden: (0,0), (1,0), (1,1), (0,1) i t s cx cy 1: 0; 0; 0; 0 2: 1; 1; 2; 1 3: 1; 2; 3; 3 4: 0; 2; 3; 3 cx= 3/(3*2)= 0.5; cy= 3/(3*2)= 0.5 orden: (0,0), (1,0), (1,2) i t s cx cy 1: 0; 0; 0; 0 2: 2; 2; 4; 4 3: 0; 2; 4; 4 cx= 4/(3*2)= 0.667; cy= 4/(3*2)= 0.667 orden: (-6,-3), (-8,-3), (-9,-8), (-7, -12), (-4, -10), (-3, -6), (-4, -4) i t s cx cy 1: -6; -6; 84; 36 2: 37; 31; -545; -371 3: 52; 83; -1377; -1411 4: 22; 105; -1619; -1895 5: -6; 99; -1577; -1799 6: -12; 87; -1493; -1679 7: -12; 75; -1373; -1595 cx= -1373/(3*75)= -6.102; cy= -1595/(3*75)= -7.089 |
Salida: |
0.500 0.500 0.667 0.667 -6.102 -7.089 |
Lenguaje | Fecha | Tiempos [s] | Memoria [Kb] | |||
---|---|---|---|---|---|---|
Ejecución | Mejor | Mediana | Peor | |||
Pascal | 06-Jun-2006 | 0.777 | 0.316 | 1.258 | 9.131 | 324 |
C | 06-Jun-2006 | 0.738 | 404 |