2010-05-14 14 views
6

Sé cómo encontrar el centroide (centro de masa) de un polígono regular. Esto supone que cada parte del polígono pesa lo mismo. Pero, ¿cómo puedo calcular el centroide de un polígono sin peso (hecho de aerogel quizás :), donde cada vértice tiene un peso?Encuentra el centroide de un polígono con vértices ponderados

ilustración simplificada de lo que quiero decir usando la línea recta:

5kg-----------------5kg 
      ^center of gravity 

10kg---------------5kg 
     ^center of gravity offset du to weight of vertices 

Por supuesto, sé cómo calcular el centro de gravedad en una línea recta con vértices ponderados, pero ¿cómo lo hago en un polígono con vértices ponderados?

¡Gracias por su tiempo!

+0

Bueno, esto es algo así como "no relacionado con la programación", aunque me gustan las preguntas sobre matemática. –

Respuesta

13

Quiere obtener un promedio ponderado de todos los vértices. Así que supongamos que vértices son v1, v2, v3 ... vn con masas m1, m2 ... mn y tienen coordenadas xey v1x, v1y, v2x, v2y etc. para obtener el centro de masa (cx, cy) usted quiere:

cx = (v1x*m1 + v2x*m2 + ... vnx*mn)/(m1 + m2 .... mn) 
cy = (v1y*m1 + v2y*m2 + ... vny*mn)/(m1 + m2 .... mn) 

Es esencialmente el mismo principio que cuando lo hace para una línea.

+0

¡Genial, gracias! –

+0

De hecho, puede llamar a esto la definición de centroide :) –

0

El formular sería:

Mc = (sum_from_0_to_max (vértices) (m_i * P_i)/M)

donde Mc es el centro de las masas, m_i es la masa del vértice i, P_i la posición y M la masa total.

Intenta buscar "cuerpos rígidos" en google, supongo que encontrarás mucha información útil.

Editar:

En el código sería algo como esto:

Vector3D resultado; // inicializado con 0, 0, 0
Temp Vector3D; // sum
long sumMasses = 0;
para (Vértice v: vértices) {
temp + = (v.mass * v.position);
sumMasses + = v.mass;
}
result = temp/sumMasses;

5

1) Generar un vector para cada vértice

2) multiplicar cada vector para el peso del vértice

3) Suma los vectores

4) Divide para masa total

5) ¡Hay tu centro de masa!

+0

OMG. . . . . . . –

+0

@Camilo Martin ¿Por qué? ¿Cuál es el problema con eso? – nico

+0

No hay problema. Creo que a él simplemente le gusta la simplicidad :) – pheelicks

Cuestiones relacionadas