2009-02-07 10 views
18

(Sí, por desgracia, esta es una pregunta tarea)centro hallazgo de triángulo 2D

Me han dado una estructura para un triángulo 2D con coordenadas X e Y, una variable de rotación, y así sucesivamente. Desde el punto creado por esas coordenadas xey, se supone que dibujaré un triángulo alrededor del punto y lo rotaré apropiadamente usando la variable de rotación.

Estoy familiarizado con el dibujo de triángulos en OpenGl con GL_TRIANGLES. Mi problema es de alguna manera extraer el medio de un triángulo y dibujar los vértices a su alrededor.

Espero haber redactado esto correctamente, ya que estoy un poco confundido.

Gracias.

editar: Sí, lo que estoy buscando es el centroide.

Respuesta

33

Existen diferentes "tipos" de centros de un triángulo. Detalles sobre: ​​The Centers of a Triangle. Un método rápido para encontrar un centro de un triángulo es promediar todas las coordenadas de su punto. Por ejemplo:

GLfloat centerX = (tri[0].x + tri[1].x + tri[2].x)/3; 
GLfloat centerY = (tri[0].y + tri[1].y + tri[2].y)/3; 

Cuando encuentre el centro, deberá girar su triángulo alrededor del centro. Para hacer esto, traduzca para que el centro esté ahora en (0, 0). Realiza tu rotación. Ahora invierta la traducción que realizó anteriormente.

+1

El enlace es especialmente útil. De alguna manera me perdí todo esto en Google. Gracias. – ray

6

Supongo que te refieres al centroide del triángulo?
Esto se puede calcular fácilmente por 1/3 (A + B + C) donde A, B y C son los puntos respectivos del triángulo. Si tiene sus puntos, simplemente multiplíquelos por su matriz de rotación como de costumbre. Espero tenerte bien.

0

Por "medio" ¿quiere decir "centroide", a.k.a. el centro de gravedad si fuera un objeto 3D de grosor y densidad constantes?

Si es así, elija dos puntos y encuentre el punto medio entre ellos. Luego tome este punto medio y el tercer punto, y encuentre el punto 1/3 del camino entre ellos (más cerca del punto medio). Ese es tu centroide. No estoy haciendo los cálculos por ti.

Cuestiones relacionadas